prod.config.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /* eslint-disable no-undef */
  2. const path = require('path');
  3. const webpack = require('webpack');
  4. const ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. module.exports = {
  6. bail: true,
  7. devtool: 'source-map',
  8. entry: {
  9. 'DPlayer': './src/index.js'
  10. },
  11. output: {
  12. path: path.resolve(__dirname, '..', 'dist'),
  13. filename: '[name].min.js',
  14. library: '[name]',
  15. libraryTarget: 'umd',
  16. umdNamedDefine: true,
  17. publicPath: '/'
  18. },
  19. resolve: {
  20. modules: ['node_modules'],
  21. extensions: ['.js', '.scss']
  22. },
  23. module: {
  24. strictExportPresence: true,
  25. rules: [
  26. {
  27. test: /\.js$/,
  28. enforce: 'pre',
  29. loader: require.resolve('eslint-loader'),
  30. include: path.resolve(__dirname, '../src'),
  31. },
  32. {
  33. test: /\.js$/,
  34. use: [
  35. require.resolve('template-string-optimize-loader'),
  36. {
  37. loader: require.resolve('babel-loader'),
  38. options: {
  39. compact: true,
  40. presets: ['env']
  41. }
  42. }
  43. ]
  44. },
  45. {
  46. test: /\.scss$/,
  47. use: ExtractTextPlugin.extract({
  48. fallback: require.resolve('style-loader'),
  49. use: [
  50. {
  51. loader: require.resolve('css-loader'),
  52. options: {
  53. importLoaders: 1,
  54. minimize: true,
  55. sourceMap: true
  56. }
  57. },
  58. {
  59. loader: require.resolve('postcss-loader'),
  60. options: {
  61. config: {
  62. path: path.join(__dirname, 'postcss.config.js')
  63. }
  64. }
  65. },
  66. require.resolve('sass-loader')
  67. ]
  68. })
  69. },
  70. {
  71. test: /\.(png|jpg)$/,
  72. loader: require.resolve('url-loader'),
  73. options: {
  74. 'limit': 40000
  75. }
  76. }
  77. ]
  78. },
  79. plugins: [
  80. new webpack.DefinePlugin({
  81. DPLAYER_VERSION: `"${require('../package.json').version}"`
  82. }),
  83. new webpack.optimize.UglifyJsPlugin({
  84. compress: {
  85. warnings: false
  86. },
  87. output: {
  88. comments: false,
  89. ascii_only: true
  90. },
  91. sourceMap: true
  92. }),
  93. new ExtractTextPlugin({
  94. filename: '[name].min.css'
  95. })
  96. ],
  97. node: {
  98. dgram: 'empty',
  99. fs: 'empty',
  100. net: 'empty',
  101. tls: 'empty',
  102. }
  103. };