webpack配合babel使用

一、babel介绍

①Babel 是一个 JavaScript 编译器,可以把ES6的语法转为兼容浏览器的ES5语法

②Babel中文官网:https://www.babeljs.cn/

③Babel可以单独使用,但是一般都是和webpack结合一起使用

二、webpack里使用babel

1、babel-loader babel-core babel-preset-env (转换语法)

①安装依赖:

// 已经在项目里安装了webpack的情况下
npm install --save-dev babel-loader babel-core babel-preset-env

②配置

// 该文件其实最终是要在node环境下执行的
const path = require(‘path‘)
const htmlWebpackPlugin = require(‘html-webpack-plugin‘)

// 导出一个具有特殊属性配置的对象
module.exports = {
    entry:‘./src/main.js‘,/* 入口文件模块路径 */
    output:{
        path:path.join(__dirname,‘./dist/‘),/* 出口文件模块所属目录,必须是一个绝对路径 */
        filename:‘bundle.js‘/* 打包的结果文件名称 */
    },
    devServer:{
        // 配置webpack-dev-server的www目录
        contentBase:‘./dist‘
    },
    plugins:[
        // 该插件可以把index.html打包到bundle.js文件所属目录,跟着bundle走
        // 同时也会自动在index.html中注入script引用链接,并且引用的资源名称,也取决于打包的文件名称
        new htmlWebpackPlugin({
            template:‘./index.html‘
        })
    ],
    module:{
        rules:[
            {
                test:/.css$/,
                use:[
                    //注意:这里的顺序很重要,不要乱了顺序
                    ‘style-loader‘,
                    ‘css-loader‘
                ]
            },
            {
                test:/.(jpg|png|gif|svg)$/,
                use:[
                    ‘file-loader‘
                ]
            },
            {
                test:/\.js$/,
                exclude:/(node_modules|bower_components)/,//排除掉node_module目录
                use:{
                    loader:‘babel-loader‘,
                    options:{
                        presets:[‘env‘] //转码规则
                    }
                }
            }
        ]
    }
}

③打包

npm run build

2、babel-polyfill 来提供低版本浏览器中的不支持API

①安装依赖

npm install --save-dev babel-polyfill

②配置:这样会在打包的时候提供一个垫脚片用以兼容低版本浏览器中不支持的API(兼容低版本浏览器的一个方法)

// 该文件其实最终是要在node环境下执行的
const path = require(‘path‘)
const htmlWebpackPlugin = require(‘html-webpack-plugin‘)

// 导出一个具有特殊属性配置的对象
module.exports = {
    entry:[‘babel-polyfill‘,‘./src/main.js‘],/* 入口文件模块路径 */
    output:{
        path:path.join(__dirname,‘./dist/‘),/* 出口文件模块所属目录,必须是一个绝对路径 */
        filename:‘bundle.js‘/* 打包的结果文件名称 */
    },
    devServer:{
        // 配置webpack-dev-server的www目录
        contentBase:‘./dist‘
    },
    plugins:[
        // 该插件可以把index.html打包到bundle.js文件所属目录,跟着bundle走
        // 同时也会自动在index.html中注入script引用链接,并且引用的资源名称,也取决于打包的文件名称
        new htmlWebpackPlugin({
            template:‘./index.html‘
        })
    ],
    module:{
        rules:[
            {
                test:/.css$/,
                use:[
                    //注意:这里的顺序很重要,不要乱了顺序
                    ‘style-loader‘,
                    ‘css-loader‘
                ]
            },
            {
                test:/.(jpg|png|gif|svg)$/,
                use:[
                    ‘file-loader‘
                ]
            },
            {
                test:/\.js$/,
                exclude:/(node_modules|bower_components)/,//排除掉node_module目录
                use:{
                    loader:‘babel-loader‘,
                    options:{
                        presets:[‘env‘] //转码规则
                    }
                }
            }
        ]
    }
}

③打包

npm run build

3、transform-runtime解决代码重复问题

①在打包的过程中,babel会在包里提供一些工具函数,而这些工具函数可能会重复的出现在多个模块。

②这样会导致打包的体积过大,所以babel提供了babel-transform-runtime解决这个体积过大的问题

③安装依赖

npm install babel-plugin-transform-runtime --save-dev
npm install babel-runtime --save

④配置

// 该文件其实最终是要在node环境下执行的
const path = require(‘path‘)
const htmlWebpackPlugin = require(‘html-webpack-plugin‘)

// 导出一个具有特殊属性配置的对象
module.exports = {
    entry:[‘babel-polyfill‘,‘./src/main.js‘],/* 入口文件模块路径 */
    output:{
        path:path.join(__dirname,‘./dist/‘),/* 出口文件模块所属目录,必须是一个绝对路径 */
        filename:‘bundle.js‘/* 打包的结果文件名称 */
    },
    devServer:{
        // 配置webpack-dev-server的www目录
        contentBase:‘./dist‘
    },
    plugins:[
        // 该插件可以把index.html打包到bundle.js文件所属目录,跟着bundle走
        // 同时也会自动在index.html中注入script引用链接,并且引用的资源名称,也取决于打包的文件名称
        new htmlWebpackPlugin({
            template:‘./index.html‘
        })
    ],
    module:{
        rules:[
            {
                test:/.css$/,
                use:[
                    //注意:这里的顺序很重要,不要乱了顺序
                    ‘style-loader‘,
                    ‘css-loader‘
                ]
            },
            {
                test:/.(jpg|png|gif|svg)$/,
                use:[
                    ‘file-loader‘
                ]
            },
            {
                test:/\.js$/,
                exclude:/(node_modules|bower_components)/,//排除掉node_module目录
                use:{
                    loader:‘babel-loader‘,
                    options:{
                        presets:[‘env‘], //转码规则
                        plugins:[‘transform-runtime‘]
                    }
                }
            }
        ]
    }
}

原文地址:https://www.cnblogs.com/EricZLin/p/9409235.html

时间: 2024-08-01 09:56:48

webpack配合babel使用的相关文章

webpack配合vue.js实现完整的单页面demo

本篇文章主要是我在开发前研究了webpack+vue.js的单页面应用,因为需要用到node的npm,所以确保安装了node,建议官网安装最新的稳定版本.并且在项目中需要加载一些npm包,由于npm的服务器在国外,可能我们下载的过程会比较慢,所以建议用阿里的镜像cnpm安装,10分钟实时更新一次npm的镜像.具体的下载配置参考阿里的cnpm官网.本文章只是和大家探讨怎么利用webpack配合vue.js做一个单页面应用,具体关于vue里面的内容怎么写并不在本篇文章的介绍范围. 1. 定义我们de

webpack使用babel报错:Error: Cannot find module '@babel/core'

这两天再回顾配置webpack,当使用到webpack配置babel时候报错了.没有找到babel/core 查看了一下文档,才发现,是因为版本问题 默认babel-loader | babel对应的版本需要一致.所以回退到@7版本就可以.. npm install -D [email protected]7 babel-core babel-preset-env 这样就解决啦. webpack使用babel报错:Error: Cannot find module '@babel/core' 原

vue - webpack、babel

一.webpack 在这里我仅仅的是对webpack做个讲解,webpack这个工具非常强大,解决了我们前端很繁琐的一些工具流程繁琐的事情.如果感兴趣的同学,建议还是看官网吧. 中文链接地址:https://www.webpackjs.com/ 为什么要使用webpack? 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端社区涌现出了很多好的实践方法 模块化,让我们可以把复杂的程序细化为小的文件; 类似于TypeScr

webpack + typescript + babel打包*.min.js文件的环境配置

将多个*.ts文件打包成一个*.min.js文件的开发配置 1.初始化 npm init 新建以下文件目录: 2.安装依赖: "devDependencies": { "@babel/core": "^7.4.5", "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", "ts-loader&quo

最简单的babel+webpack配置

首先先介绍一下2个重要的库:core-js 和 regenerator core-js core-js 是用于 JavaScript 的组合式标准化库,它包含 es5 (e.g: object.freeze), es6的 promise,symbols, collections, iterators, typed arrays, es7+提案等等的 polyfills 实现.也就是说,它几乎包含了所有 JavaScript 最新标准的垫片.不过为什么它不把 generator 也实现了... ?

详解 Webpack+Babel+React 开发环境的搭建

1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等)作为模块进行编译后进行打包. 2.安装Webpack 要开始使用Webpack在项目中进行开发前我们首先需要在全局环境中进行安装. npm install webpack -g 3.创建一个项目 安装好后创建一个名叫 learn-webpack 的项目并进入该项目文件夹,当然项目名字你可以起你自己想

重温 Webpack, Babel 和 React

开始之前 在书写文章之前,我假设大家已经有了 JavaScript,Node 包管理工具,Linux 终端操作 这些基本技能,接下来,我将一步一步指引大家从头搭建一个 React 项目 最终实现的效果 我们将使用 Webpack 和 Babel 搭建一个 React 应用,我们的目的很清晰,就是 更好的理解和掌握这些工具的使用 我们创建的应用程序既要做到 最小,也要遵循 最佳实践,为不是特别熟练的同学巩固一下基础 初始化 创建你的项目,并添加的你的配置文件 package.json mkdir

Webpack 代码分离

Webpack 代码分离 提示: 版本问题 本文基于 webpack 2.x 版本.webpack 2.x 相比 webpack 1.x 有重大改变.所以,如果你的项目中已使用了 webpack 1.x ,本教程的示例将不适用,请慎重. 如果铁了心要升级 webpack ,请参考 webpack 官方文档 - 从 v1 迁移到 v2 阅读建议 阅读本文前,建议先阅读 Webpack 概念 . 代码分离是 webpack 中最引人注目的特性之一. 你可以把你的代码分离到不同的 bundle 中,然

基于webpack和vue.js搭建开发环境

前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. 问题所在 之前的项目总结为以下内容: 1.AMD模块规范开发,使用requirejs实现,使用rjs打包,最终导致的结果是,输出的项目臃肿,肿的就像一坨狗不理……不忍直视2.使用gulp进行打包,这一点貌似没有可吐槽的地方,毕竟都是被grunt折磨过来的……3.数据的渲染使用模板引擎,这就意味着你要