webpack.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const path = require('path')
  2. const webpack = require('webpack')
  3. function resolve(dir) {
  4. return path.join(__dirname, '..', dir)
  5. }
  6. module.exports = {
  7. entry: './src/index.js',
  8. output: {
  9. path: path.resolve(__dirname, './dist'),
  10. publicPath: '/dist/',
  11. filename: 'index.js',
  12. library: 'Clock',
  13. libraryTarget: 'umd',
  14. umdNamedDefine: true
  15. },
  16. module: {
  17. rules: [
  18. {
  19. test: /\.(js|vue)$/,
  20. loader: 'eslint-loader',
  21. enforce: 'pre',
  22. include: [resolve('src'), resolve('test')],
  23. options: {
  24. formatter: require('eslint-friendly-formatter')
  25. }
  26. },
  27. {
  28. test: /\.vue$/,
  29. loader: 'vue-loader',
  30. options: {
  31. loaders: {
  32. scss: 'style-loader!css-loader!sass-loader'
  33. },
  34. },
  35. },
  36. {
  37. test: /\.js$/,
  38. loader: 'babel-loader',
  39. exclude: /node_modules/
  40. },
  41. {
  42. test: /\.(png|jpg|gif|svg)$/,
  43. loader: 'file-loader',
  44. options: {
  45. name: '[name].[ext]?[hash]'
  46. }
  47. }
  48. ]
  49. },
  50. resolve: {
  51. alias: {
  52. vue$: 'vue/dist/vue.esm.js'
  53. }
  54. },
  55. externals: {
  56. vue: {
  57. root: 'Vue',
  58. commonjs: 'vue',
  59. commonjs2: 'vue',
  60. amd: 'vue'
  61. }
  62. },
  63. devServer: {
  64. historyApiFallback: true,
  65. noInfo: true
  66. },
  67. performance: {
  68. hints: false
  69. },
  70. devtool: '#source-map'
  71. }
  72. if (process.env.NODE_ENV === 'production') {
  73. module.exports.devtool = '#source-map'
  74. // http://vue-loader.vuejs.org/en/workflow/production.html
  75. module.exports.plugins = (module.exports.plugins || []).concat([
  76. new webpack.DefinePlugin({
  77. 'process.env': {
  78. NODE_ENV: '"production"'
  79. }
  80. }),
  81. new webpack.optimize.UglifyJsPlugin({
  82. sourceMap: false,
  83. compress: {
  84. warnings: false
  85. }
  86. }),
  87. new webpack.LoaderOptionsPlugin({
  88. minimize: true
  89. })
  90. ])
  91. }