dev.config.js 3.2 KB

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