首页 > 其他分享 >webpack-loader-使用babel-loader转换处理高级的js语法

webpack-loader-使用babel-loader转换处理高级的js语法

时间:2023-05-28 18:11:05浏览次数:52  
标签:插件 babel js webpack path loader

webpack只能打包处理一部分高级的JavaScript语法。对于那些webpack无法处理的高级js语法,需要借助于babel-loader进行打包处理。例如webpack无法处理下面的JavaScript代码:

//定义装饰器函数
function info(target) {
    target.info = 'Person info.'
}

//定义一个普通的类
@info
class Person {}

console.log(Person.info)

运行如下的命令安装对应的依赖包:
npm i babel-loader @babel/core @babel/plugin-proposal-decorators -D

在webpack.config.js的module->rules数组中,添加loader规则如下:

const path = require('path')
// 导入html插件,得到一个构造函数
const HtmlPlugin = require('html-webpack-plugin')
// 创建HTML插件的实例对象
const htmlPlugin = new HtmlPlugin({
    template: './src/index.html',//指定原文件的存放路径
    filename: './index.html'//指定生成的文件的存放路径
})
//使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {
    // 代表webpack运行的模式,可选值有两个 development 和 production
    // 结论:开发时候一定要用development,因为追求的是打包的速度,而不是体积
    // 反过来,发布上线的时候一定能要用production,因为上线追求的是体积小,而不是打包速度快
    mode: 'production',
    plugins: [htmlPlugin],//通过plugins节点,使htmlPlugin插件生效
    entry: path.join(__dirname, './src/index.js'),//打包入口文件的路径
    output: {
        path: path.join(__dirname, './dist'),//输出文件的存放路径
        filename: 'bundle.js'//输出文件的名称
    },
    devServer: {
        open: true,
        port: 80,
        // contentBase: __dirname, -- 注意,这种写法已弃用
        static: {
            directory: path.join(__dirname, "/"),
        },
    },
    module: {
        rules: [
            //定义了不同模块对应的loader
            {test: /\.css$/, use: ['style-loader', 'css-loader']},
            //处理.less文件的loader
            {test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader']},
            //文件后缀名的匹配模块
            {test: /\.jpg|png|gif$/, use: 'url-loader'},
            //使用babel-loader处理高级的JS语法
            //在配置babel-loader的时候,程序员只需要把自己的代码进行转换即可,一定要排除node_module目录中的JS文件
            //因为第三方包中的JS兼容性,不需要程序员关心
            {test: /\.js$/, use: 'babel-loader', exclude: /node_modules/}
        ]
    }
}

在项目根目录下,创建名为babel.config.js的配置文件,定义Babel的配置项如下:

module.exports = {
    //声明babel可用的插件
    //将来,webpack在调用babel-loader的时候,会先加载plugins插件来使用
    plugins: [['@babel/plugin-proposal-decorators', {legacy: true}]]
}

详情请参考Babel的官网https://babeljs.io/docs/en/babel-plugin-proposal-decorators

标签:插件,babel,js,webpack,path,loader
From: https://www.cnblogs.com/yang-young-young/p/17438577.html

相关文章

  • Webpack and Babel — What are they, and how to use them with React
    摘抄自:https://medium.com/@agzuniverse/webpack-and-babel-what-are-they-and-how-to-use-them-with-react-5807afc82ca8WebpackandBabel—Toolswecan’tcodewithoutWe’llbeconfiguringbothoftheseforourReactproject,sofirsthere’saquickexplanation......
  • webpack相关
    npm是第三方包管理器,npminit之后会生成一个package.json文件,里面展示了项目中依赖的第三方包信息。下载完node之后,npmjiu自动下载好了。npmipackageName-S(-S是--save的缩写,依赖会保存在package.json文件的dependencies里面,意思是这个包在生产环境中需要,用户会用到这个......
  • webpack报错处理:The extension in the request is mandatory for it to be fully spe
    完整的报错提示如下:BREAKINGCHANGE:Therequest'./module2'failedtoresolveonlybecauseitwasresolvedasfullyspecified(probablybecausetheoriginisstrictEcmaScriptModule,e.g.amodulewithjavascriptmimetype,a'*.mjs'file,or......
  • webpack4
    webpack4webpack是一种前端资源构建工具,一个静态模块打包器(modulebundler)。在webpack看来,前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。使用初始化package.jsonnpminit下......
  • webpack-loader打包处理less文件
    打包处理less文件运行npmiless-loaderless-D命令在webpack.config.js的module->rules数组中,添加loader规则如下:module:{rules:[//定义了不同模块对应的loader{test:/\.css$/,use:['style-loader','css-loader']},//处理.less文......
  • webpack-loader的作用和loader调用的过程
    loader概述在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块。其他非.js后缀名结尾的模块,webpack默认处理不了,需要调用loader加载器才可以正常打包,否则会报错!loader加载器的作用:协助webpack打包处理特定的文件模块。比如:css-loader可以打包处理.css相关的文件l......
  • 直播app开发,基于van-uploader封装的文件上传图片压缩组件
    直播app开发,基于van-uploader封装的文件上传图片压缩组件1、调用<template>  <div>    <compress-uploaderv-model="fileList":compressSwitch="true":quality="0.5":maxCount="3"/>  </div></template> <......
  • obloader 基于典型场景数据导入
    作者:刘书盛热衷技术分享、编写技术文档原创作品oceanbase数据库原创内容未经授权不得随意使用,转载请联系小编并注明来源,谢谢!预处理函数:函数签名返回类型描述LOWER(char)String对参数值中的字母转换为小写。参数值可以是列名、常量或者嵌套表达式。当参数值是常量......
  • 百度WebUploader中实现文件上传下载的三种解决方案(推荐)
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • webpack-了解devServer中常用的选项
    devServer节点在webpack.config.js配置文件中,可以通过devServer节点对webpack-dev-server插件进行更多的配置,示例代码如下:devServer:{ open:ture,//初次打包完成后,自动打开浏览器 host:'127.0.0.1',//实时打包所使用的主机地址 port:80,//实时打包所使用的端口号}注意:凡是......