prod.config.js 3.2 KB

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