每次更改完代码后需要执行webpack重新打包,不利于开发环境调试代码,因此需要配置,显示文件修改后自动打包运行。

一、devServer

  1. 安装dev-server包

npm i webpack-dev-server -D

  1. 修改webpack.config.js文件,新增devServer ```javascript const {resolve} = require(‘path’); const HtmlWebpackPlugin = require(‘html-webpack-plugin’) module.exports = { // 入口 entry:’./src/index.js’, // 输出 output:{
    1. // 输出文件名
    2. filename:'built.js',
    3. //输出路径
    4. path:resolve(__dirname,'build')
    }, // loader的配置 module:{
    1. rules:[
    2. {
    3. //匹配哪些文件
    4. test:/\.css/,
    5. //使用哪些loader进行处理
    6. use:[
    7. 'style-loader',
    8. 'css-loader',
    9. 'less-loader'
    10. ]
    11. },
    12. {
    13. // 处理html中的img
    14. test: /\.html$/,
    15. loader:'html-loader'
    16. }
    17. ]
  1. },
  2. plugins:[
  3. new HtmlWebpackPlugin({
  4. // 复制一个html文件,并引入
  5. template:'./src/index.html'
  6. })
  7. ],
  8. // 自动打包运行
  9. // 指令:npx webpack-dev-server
  10. devServer: {
  11. contentBase: resolve(__dirname,'build'),
  12. compress:true,
  13. port:3000,
  14. open:true
  15. },
  16. // 模式
  17. mode:'development'

}

  1. <a name="6.devServer"></a>
  2. ## 二、提取css成单独文件
  3. > 用到mini-css-extract-plugin插件,将style-loader 改为 MiniCssExtractPlugin.loader,
  4. - webpack.config.js文件(配置文件)
  5. ```javascript
  6. const {resolve} = require('path');
  7. const HtmlWebpackPlugin = require('html-webpack-plugin')
  8. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
  9. module.exports = {
  10. // 入口
  11. entry:'./src/index.js',
  12. // 输出
  13. output:{
  14. // 输出文件名
  15. filename:'built.js',
  16. //输出路径
  17. path:resolve(__dirname,'build')
  18. },
  19. // loader的配置
  20. module:{
  21. rules:[
  22. {
  23. //匹配哪些文件
  24. test:/\.css/,
  25. //使用哪些loader进行处理
  26. use:[
  27. MiniCssExtractPlugin.loader,
  28. 'css-loader',
  29. ]
  30. },
  31. {
  32. // 处理html中的img
  33. test: /\.html$/,
  34. loader:'html-loader'
  35. }
  36. ]
  37. },
  38. plugins:[
  39. new HtmlWebpackPlugin({
  40. // 复制一个html文件,并引入
  41. template:'./src/index.html'
  42. }),
  43. new MiniCssExtractPlugin()
  44. ],
  45. // 自动打包运行
  46. // 指令:npx webpack-dev-server
  47. devServer: {
  48. contentBase: resolve(__dirname,'build'),
  49. compress:true,
  50. port:3000,
  51. open:true
  52. },
  53. // 模式
  54. mode:'development'
  55. }

三、css兼容

package.json增加以下内容

  1. "browserslist":{
  2. "development": [
  3. "last 1 chrome version",
  4. "last 1 firefox version",
  5. "last 1 safari version",
  6. ],
  7. "production": [
  8. ">0.1%",
  9. "not dead",
  10. "not op_mini all"
  11. ]
  12. }
  • webpack.config.js文件(配置文件) ```javascript const {resolve} = require(‘path’); const HtmlWebpackPlugin = require(‘html-webpack-plugin’) const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’)

// 设置nodejs环境变量 // process.env.NODE_ENV = “development” module.exports = { // 入口 entry:’./src/index.js’, // 输出 output:{ // 输出文件名 filename:’built.js’, //输出路径 path:resolve(__dirname,’build’) }, // loader的配置 module:{ rules:[ { //匹配哪些文件 test:/.css/, //使用哪些loader进行处理 use:[ MiniCssExtractPlugin.loader, ‘css-loader’, { loader: “postcss-loader”, options:{ ident:’postcss’, plugins:()=>{ require(‘postcss-preset-env’)() } } } ] }, { // 处理html中的img test: /.html$/, loader:’html-loader’ } ]

  1. },
  2. plugins:[
  3. new HtmlWebpackPlugin({
  4. // 复制一个html文件,并引入
  5. template:'./src/index.html'
  6. }),
  7. new MiniCssExtractPlugin()
  8. ],
  9. // 自动打包运行
  10. // 指令:npx webpack-dev-server
  11. devServer: {
  12. contentBase: resolve(__dirname,'build'),
  13. compress:true,
  14. port:3000,
  15. open:true
  16. },
  17. // 模式
  18. mode:'development'

}

  1. <a name="ZLW3v"></a>
  2. ## 四、css压缩
  3. - webpack.config.js文件(配置文件)
  4. ```javascript
  5. const {resolve} = require('path');
  6. const HtmlWebpackPlugin = require('html-webpack-plugin')
  7. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
  8. const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
  9. // 设置nodejs环境变量
  10. // process.env.NODE_ENV = "development"
  11. module.exports = {
  12. // 入口
  13. entry:'./src/index.js',
  14. // 输出
  15. output:{
  16. // 输出文件名
  17. filename:'built.js',
  18. //输出路径
  19. path:resolve(__dirname,'build')
  20. },
  21. // loader的配置
  22. module:{
  23. rules:[
  24. {
  25. //匹配哪些文件
  26. test:/\.css/,
  27. //使用哪些loader进行处理
  28. use:[
  29. MiniCssExtractPlugin.loader,
  30. 'css-loader',
  31. {
  32. loader: "postcss-loader",
  33. options:{
  34. ident:'postcss',
  35. plugins:()=>{
  36. require('postcss-preset-env')()
  37. }
  38. }
  39. }
  40. ]
  41. },
  42. {
  43. // 处理html中的img
  44. test: /\.html$/,
  45. loader:'html-loader'
  46. }
  47. ]
  48. },
  49. plugins:[
  50. new HtmlWebpackPlugin({
  51. // 复制一个html文件,并引入
  52. template:'./src/index.html'
  53. }),
  54. new MiniCssExtractPlugin(),
  55. new OptimizeCssAssetsWebpackPlugin()
  56. ],
  57. // 自动打包运行
  58. // 指令:npx webpack-dev-server
  59. devServer: {
  60. contentBase: resolve(__dirname,'build'),
  61. compress:true,
  62. port:3000,
  63. open:true
  64. },
  65. // 模式
  66. mode:'development'
  67. }

五、eslint 语法检查

  • 安装依赖

npm i eslint eslint-loader eslint-config-airbnb-base eslint-plugin-import

  • webpack.config.js文件(配置文件) ```javascript const {resolve} = require(‘path’); const HtmlWebpackPlugin = require(‘html-webpack-plugin’) const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’) const OptimizeCssAssetsWebpackPlugin = require(‘optimize-css-assets-webpack-plugin’) // 设置nodejs环境变量 // process.env.NODE_ENV = “development” module.exports = { // 入口 entry:’./src/index.js’, // 输出 output:{
    1. // 输出文件名
    2. filename:'built.js',
    3. //输出路径
    4. path:resolve(__dirname,'build')
    }, // loader的配置 module:{
    1. rules:[
    2. {
    3. //匹配哪些文件
    4. test:/\.css/,
    5. //使用哪些loader进行处理
    6. use:[
    7. MiniCssExtractPlugin.loader,
    8. 'css-loader',
    9. {
    10. loader: "postcss-loader",
    11. options:{
    12. ident:'postcss',
    13. plugins:()=>{
    14. require('postcss-preset-env')()
    15. }
    16. }
    17. }
    18. ]
    19. },
    20. {
    21. // 处理html中的img
    22. test: /\.html$/,
    23. loader:'html-loader'
    24. },
    25. // {
    26. // test:/\.js$/,
    27. // exclude:/node_modules/,
    28. // loader:'eslint-loader',
    29. // options:{
    30. // fix:true
    31. // }
    32. // }
    33. ]
  1. },
  2. plugins:[
  3. new HtmlWebpackPlugin({
  4. // 复制一个html文件,并引入
  5. template:'./src/index.html'
  6. }),
  7. new MiniCssExtractPlugin(),
  8. new OptimizeCssAssetsWebpackPlugin()
  9. ],
  10. // 自动打包运行
  11. // 指令:npx webpack-dev-server
  12. devServer: {
  13. contentBase: resolve(__dirname,'build'),
  14. compress:true,
  15. port:3000,
  16. open:true
  17. },
  18. // 模式
  19. mode:'development'

} ```