• webpack4从0开始构建前端单页项目(4)用babel-loader处理js㈠配置


    Babel 是 JavaScript 编译器,用来将 ES6/ES7/ES8...等版本的代码转换成 ES3/ES5 等低版本浏览器支持的 js 语法。babel-loader 就是用来在 webpack 中处理 JavaScript 的编译器。

    安装 babel-loader

        cnpm install  babel-loader @babel/core @babel/preset-env -D
    

    项目结构

        project
        |   .editorconfig       # 配置格式化插件
        |   package.json        # 项目需要的依赖
        |   webpack.config.js   # webpack配置文件
        |
        +---public
        |       index.html      # 用于打包生成 .html 文件的模板
        |
        ---src
                main.js         # webpack的入口文件
    

    依赖的模块(package.json)

        "devDependencies": {
            "@babel/core": "^7.11.6",
            "@babel/preset-env": "^7.11.5",
            "babel-loader": "^8.1.0",
            "html-webpack-plugin": "^4.5.0",
            "webpack": "^4.44.2",
            "webpack-cli": "^3.3.12",
            "webpack-dev-server": "^3.11.0"
        }
    

    webpack 配置文件

    // webpack.config.js
        const webpack = require("webpack");
        const path = require("path");
        const htmlWebpackPlugin = require("html-webpack-plugin");
    
        module.exports = {
            entry: "./src/main.js",
            mode: "development",
            output: {
                path: path.join(__dirname, "dist"),
                filename: "app.[hash:16].js",
            },
            plugins: [
                new htmlWebpackPlugin({
                    filename: "index.html",
                    template: "./public/index.html",
                    minify: {
                        collapseWhitespace: false,
                    },
                    inject: true,
                }),
            ],
            devServer: {
                contentBase: path.join(__dirname, "dist"),
                compress: true,
                port: 9000, // 配置端口
                hot: true,
            },
    
            module: {
                rules: [
                    {
                        test: /.js$/,
                        exclude: /(node_modules|bower_components)/, // 忽略node_modules和bower_components目录下的js的文件
                        use: {
                            loader: "babel-loader",
                            options: {
                                presets: [
                                    [
                                        "@babel/preset-env" /*
                        Presets是储存JavaScript不同标准的插件,
                        通过使用正确的presets,告诉babel按照哪个presets编译JS。(相对于babel的插件)
                        常见presets: @babel/preset-env(官方提供默认的presets)、@babel/preset-stage、@babel/preset-react、@babel/preset-typescript */,
                                        {
                                            targets: {
                                                // 根据 webpack 打包后运行环境目标(target)的自定义配置
                                                browsers: [">1%"], // 表示市场占有率大于1%的浏览器。
                                                // "browsers": [">1%", "last 3 version"], // 最近三个版本
                                                /**
                                                 * Target可以:
                                                 *  以某个 browsers 的版本为目标(大多数情况下使用)
                                                 *  以 node 的版本为目标
                                                 *  以 特定的浏览器为目标
                                                 */
                                                // node: "10", // 以node10的版本为构建目录
                                                // chrome:"70" // 以chrome70的版本为构建目录
                                            },
                                            /**
                                                    "targets": {
                                                        "chrome": "58",
                                                        "ie": "11",
                                                        "not ie <= 9"
                                                    }
                                                */
                                        },
                                    ],
                                ],
                            },
                        },
                    },
                ],
            },
        };
    

    webpack4 配置 babel 参考: https://www.webpackjs.com/loaders/babel-loader/

    webpack5 配置 babel 参考: https://webpack.docschina.org/loaders/babel-loader/

    babel 文档 : https://babel.docschina.org/

    babel-loader 文档 参考: https://github.com/babel/babel-loader

    preset/target 参考: https://babel.docschina.org/docs/en/babel-preset-env

    开发工具
  • 相关阅读:
    javascript和jquery模拟select框
    CSS使用菱形◆制作气泡对话框(兼容IE6 IE9)
    给网站添加显示在标签页上的小图标
    mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
    推荐一个学习的站
    ubuntu 12.04 安装 nginx+php+mysql web服务器
    PHP解决[function.filegetcontents]: failed to open stream: HTTP request failed!
    svn 操作命令
    svn 端口查看
    php函数parse_url()
  • 原文地址:https://www.cnblogs.com/cisbest/p/13748368.html
Copyright © 2020-2023  润新知