prod.config.js 3.3 KB

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