美文网首页
2020-10-17 web创建项目2

2020-10-17 web创建项目2

作者: aaa8808dde01 | 来源:发表于2020-10-18 18:38 被阅读0次

项目搭建过程中需要处理的几点

1.js的处理:转换ES6代码,解决浏览器兼容问题

用 babel 转换 ES6 代码

用 babel 转换 ES6 代码需要使用到 babel-loader ,我们需要安装一系列的依赖:

npm i babel-core babel-loader babel-preset-env --save-dev

然后在根目录新建一个babel配置文件 .babelrc:

{
        "presets": [
            "env"
        ]
    }

什么是babel

如何将配置用于webpack打包中?

  • 在webpack的配置文件webpack.config.js中进行配置
  • npm scripts 中使用 --module-bind
  1. 修改配置文件
module.exports = {
      module: {
        rules: [
          {
            test: /\.js$/,
            exclude: /node_modules/,
            use: {
              loader: "babel-loader"
            }
          }
        ]
      }
    }

2修改npm scripts

  "scripts": {
      "dev": "webpack --mode development --module-bind js=babel-loader",
      "build": "webpack --mode production --module-bind js=babel-loader"
    }

使用 babel-polyfill 解决兼容性问题

babel-polyfill
浏览器会不支持一些语法的使用,导致兼容性问题

npm i babel-polyfill babel-plugin-transform-runtime --save-dev

.babelrc 添加配置:

{
    "presets": [
        "env"
    ],
    "plugins": [
       "transform-runtime"
    ]
}

最后在 webpack.config.js 中将 babel-polyfill 加到你的 entry 数组中:

const path = require('path');
module.exports = {
    entry: [
        "babel-polyfill",
        path.join(__dirname, './src/index.js')
    ],
    // ...
};

2.css的处理:编译css,自动添加前缀,抽取css到独立文件

npm i mini-css-extract-plugin css-loader --save-dev
npm i style-loader postcss-loader  --save-dev

webpack.config.js配置

    // webpack.config.js
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    module.exports = (env, argv) => {
      const devMode = argv.mode !== 'production'
      return {
        module: {
          rules: [
            // ...,
            {
                test: /\.css$/,
                use: [
                    devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
                    'css-loader',
                    'postcss-loader'
                ]
            },
            ]
          },
          plugins: [
            // ...,
            new MiniCssExtractPlugin({
              filename: "[name].css",
              chunkFilename: "[id].css"
            })
          ]
      }
    }

postcss.config.js 配置

module.exports = {
        plugins: {
            autoprefixer: {}
        }
    }

3.html的处理:复制并压缩html文件

html-webpack-plugin
https://www.jb51.net/article/133357.htm

安装依赖

npm i html-webpack-plugin html-loader --save-dev

webpack.config.js配置

const HtmlWebPackPlugin = require("html-webpack-plugin");
    module.exports = {
        module: {
            rules: [
                // ...,
                {
                    test: /\.html$/,
                    use: [{
                        loader: "html-loader",
                        options: {
                            minimize: true
                        }
                    }]
                }
            ]
        },
        plugins: [
            new HtmlWebPackPlugin({
                template: "./src/index.html",
                filename: "./index.html"
            })
        ]
    };

4.dist的清理: 打包前清理源目录文件

每次打包,都会生成项目的静态资源,随着某些文件的增删,我们的 dist 目录下可能产生一些不再使用的静态资源,webpack并不会自动判断哪些是需要的资源,为了不让这些旧文件也部署到生产环境上占用空间,所以在 webpack 打包前最好能清理 dist 目录。
安装依赖clean-webpack-plugin
https://www.cnblogs.com/xiaozhumaopao/p/10792168.html

npm install clean-webpack-plugin --save-dev
  const CleanWebpackPlugin = require('clean-webpack-plugin');
  module.exports = {
    plugins: [
      new CleanWebpackPlugin(['dist']),
    ]
  };

5.assets的处理:静态资源处理

安装依赖

npm install file-loader --save-dev

webpack.config.js

module.exports = {
      module: {
        rules: [
          {
            test: /\.(png|jpg|gif)$/,
            use: [
              {
                loader: 'file-loader',
                options: {}
              }
            ]
          }
        ]
      }
    }

6.server的启用:development 模式下启动服务器并实时刷新

https://blog.csdn.net/weixin_43684713/article/details/92839419

安装依赖

npm i webpack-dev-server --save-dev

package.json

"scripts": {
      "start": "webpack-dev-server --mode development --open",
      "build": "webpack --mode production"
    }

相关文章

网友评论

      本文标题:2020-10-17 web创建项目2

      本文链接:https://www.haomeiwen.com/subject/kecfmktx.html