webpack.config.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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' : './index.js',
  6. output: {
  7. path: path.resolve(__dirname, './dist'),
  8. publicPath: '/dist/',
  9. filename: 'index.js'
  10. },
  11. module: {
  12. rules: [
  13. {
  14. test: /\.css$/,
  15. use: [
  16. 'vue-style-loader',
  17. 'css-loader'
  18. ],
  19. },
  20. {
  21. test: /\.scss$/,
  22. use: [
  23. 'vue-style-loader',
  24. 'css-loader',
  25. 'sass-loader'
  26. ],
  27. },
  28. {
  29. test: /\.sass$/,
  30. use: [
  31. 'vue-style-loader',
  32. 'css-loader',
  33. 'sass-loader?indentedSyntax'
  34. ],
  35. },
  36. {
  37. test: /\.vue$/,
  38. loader: 'vue-loader',
  39. options: {
  40. loaders: {
  41. // Since sass-loader (weirdly) has SCSS as its default parse mode, we map
  42. // the "scss" and "sass" values for the lang attribute to the right configs here.
  43. // other preprocessors should work out of the box, no loader config like this necessary.
  44. 'scss': [
  45. 'vue-style-loader',
  46. 'css-loader',
  47. 'sass-loader'
  48. ],
  49. 'sass': [
  50. 'vue-style-loader',
  51. 'css-loader',
  52. 'sass-loader?indentedSyntax'
  53. ]
  54. }
  55. // other vue-loader options go here
  56. }
  57. },
  58. {
  59. test: /\.js$/,
  60. loader: 'babel-loader',
  61. exclude: /node_modules/
  62. },
  63. {
  64. test: /\.(png|jpg|gif|svg)$/,
  65. loader: 'file-loader',
  66. options: {
  67. name: '[name].[ext]?[hash]'
  68. }
  69. },
  70. {
  71. test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/,
  72. loader: 'file-loader'
  73. }
  74. ]
  75. },
  76. resolve: {
  77. alias: {
  78. 'vue$': 'vue/dist/vue.esm.js'
  79. },
  80. extensions: ['*', '.js', '.vue', '.json']
  81. },
  82. devServer: {
  83. historyApiFallback: true,
  84. noInfo: true,
  85. overlay: true
  86. },
  87. performance: {
  88. hints: false
  89. },
  90. devtool: '#eval-source-map',
  91. }
  92. if (process.env.NODE_ENV === 'production') {
  93. module.exports.devtool = '#source-map'
  94. // http://vue-loader.vuejs.org/en/workflow/production.html
  95. module.exports.plugins = (module.exports.plugins || []).concat([
  96. new webpack.DefinePlugin({
  97. 'process.env': {
  98. NODE_ENV: '"production"'
  99. }
  100. }),
  101. new webpack.optimize.UglifyJsPlugin({
  102. sourceMap: true,
  103. compress: {
  104. warnings: false
  105. }
  106. }),
  107. new webpack.LoaderOptionsPlugin({
  108. minimize: true
  109. })
  110. ])
  111. }