webpack.config.js 1.9 KB

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