美文网首页
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