webpack.config.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. var webpack = require('webpack');
  2. var path = require('path');
  3. var autoprefixer = require('autoprefixer');
  4. var ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. var libraryName = 'DPlayer';
  6. var env = process.env.WEBPACK_ENV;
  7. var ROOT_PATH = path.resolve(__dirname);
  8. var APP_PATH = path.resolve(ROOT_PATH, 'src');
  9. var BUILD_PATH = path.resolve(ROOT_PATH, 'dist');
  10. var dev = env === 'dev';
  11. var plugins = [].concat(dev ? [] : [
  12. new webpack.optimize.UglifyJsPlugin({
  13. sourceMap: true,
  14. compressor: {
  15. warnings: false,
  16. conditionals: true,
  17. unused: true,
  18. comparisons: true,
  19. sequences: true,
  20. dead_code: true,
  21. evaluate: true,
  22. if_return: true,
  23. join_vars: true,
  24. negate_iife: false
  25. },
  26. output: {
  27. comments: false
  28. }
  29. }),
  30. new ExtractTextPlugin(`${libraryName}.min.css`)
  31. ]);
  32. module.exports = {
  33. entry: './src/' + libraryName + '.js',
  34. output: {
  35. path: BUILD_PATH,
  36. filename: libraryName + '.min.js',
  37. library: libraryName,
  38. libraryTarget: 'umd',
  39. umdNamedDefine: true
  40. },
  41. devtool: dev ? 'eval-source-map' : 'source-map',
  42. devServer: {
  43. publicPath: "/dist/",
  44. },
  45. module: {
  46. rules: [
  47. {
  48. enforce: 'pre',
  49. test: /\.js$/,
  50. loader: 'eslint-loader',
  51. include: APP_PATH,
  52. options: {
  53. configFile: './.eslintrc'
  54. },
  55. },
  56. {
  57. test: /\.js$/,
  58. loader: 'template-string-optimize-loader',
  59. include: APP_PATH,
  60. },
  61. {
  62. test: /\.js$/,
  63. loader: 'babel-loader',
  64. include: APP_PATH,
  65. options: {
  66. presets: ['es2015']
  67. }
  68. },
  69. {
  70. test: /\.scss$/,
  71. use: dev ? ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'] : ExtractTextPlugin.extract({
  72. use: ['css-loader?minimize&-autoprefixer', 'postcss-loader', 'sass-loader']
  73. }),
  74. include: APP_PATH
  75. },
  76. {
  77. test: /\.(png|jpg)$/,
  78. loader: 'url-loader?limit=40000'
  79. }
  80. ]
  81. },
  82. plugins: plugins
  83. };