webpack.config.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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: 'vue-count-to.min.js',
  12. library: 'CountTo',
  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. },
  31. {
  32. test: /\.js$/,
  33. loader: 'babel-loader',
  34. exclude: /node_modules/
  35. },
  36. {
  37. test: /\.(png|jpg|gif|svg)$/,
  38. loader: 'file-loader',
  39. options: {
  40. name: '[name].[ext]?[hash]'
  41. }
  42. }
  43. ]
  44. },
  45. resolve: {
  46. alias: {
  47. vue$: 'vue/dist/vue.esm.js'
  48. }
  49. },
  50. externals: {
  51. vue: {
  52. root: 'Vue',
  53. commonjs: 'vue',
  54. commonjs2: 'vue',
  55. amd: 'vue'
  56. }
  57. },
  58. devServer: {
  59. historyApiFallback: true,
  60. noInfo: true
  61. },
  62. performance: {
  63. hints: false
  64. },
  65. devtool: '#source-map'
  66. }
  67. if (process.env.NODE_ENV === 'production') {
  68. module.exports.devtool = '#source-map'
  69. // http://vue-loader.vuejs.org/en/workflow/production.html
  70. module.exports.plugins = (module.exports.plugins || []).concat([
  71. new webpack.DefinePlugin({
  72. 'process.env': {
  73. NODE_ENV: '"production"'
  74. }
  75. }),
  76. new webpack.optimize.UglifyJsPlugin({
  77. sourceMap: true,
  78. compress: {
  79. warnings: false
  80. }
  81. }),
  82. new webpack.LoaderOptionsPlugin({
  83. minimize: true
  84. })
  85. ])
  86. }