webpack.config.js 1.9 KB

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