webpack.config.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const HtmlWebpackPlugin = require('html-webpack-plugin');
  2. const MiniCssExtractPlugin = require("mini-css-extract-plugin");//将CSS代码提取为独立文件的插件
  3. const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin");//CSS模块资源优化插件
  4. const path = require('path');
  5. module.exports = {
  6. entry: './src/index.tsx',
  7. mode: 'development',
  8. resolve: {
  9. extensions: ['.ts', '.tsx', '.js', '.json']
  10. },
  11. output: {
  12. path: path.join(__dirname, '/dist'),
  13. filename: 'bundle.min.js'
  14. },
  15. module: {
  16. rules: [
  17. {
  18. test: /\.tsx?$/,
  19. use: [
  20. 'ts-loader'
  21. ]
  22. },
  23. {
  24. test: /\.scss?$/,
  25. use: [
  26. // 'style-loader',
  27. {
  28. loader: MiniCssExtractPlugin.loader//建议生产环境采用此方式解耦CSS文件与js文件
  29. },
  30. {
  31. loader: 'css-loader',
  32. options: { importLoaders: 2 }
  33. },
  34. "postcss-loader",
  35. 'sass-loader',
  36. {
  37. loader: 'sass-resources-loader',
  38. options: { resources: './src/styles/resources.scss' }
  39. }
  40. ]
  41. }
  42. ]
  43. },
  44. plugins: [
  45. new HtmlWebpackPlugin({
  46. template: "./src/index.html"
  47. }),
  48. new MiniCssExtractPlugin({
  49. filename: "[name].css"
  50. }) //为抽取出的独立的CSS文件设置配置参数
  51. ],
  52. optimization: {
  53. //对生成的CSS文件进行代码压缩 mode='production'时生效
  54. minimizer: [
  55. new OptimizeCssAssetsPlugin()
  56. ]
  57. }
  58. };