所有代码都可以再我的github上查看,每个文件夹下都会有README.md,欢迎star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/babel

1. webpack4对UglifyJsPlugin进行了改变,在配置文件(默认为webpack.config.js)或者package.json的执行脚本 "script"中需要指定环境,默认 mode 环境为 production 为压缩代码,配置环境中需要添加 mode: 'development', package.json中需要 --mode development 来取消压缩代码。

2.安装babel:
准备环境 sudo npm install webpack webpack-cli -g 安装后可执行 webpack 命令
安装babel npm install @babel/core babel-loader --save-dev

3.webpack 命令
webpack entry output
webpack --config <webpack.config.js>     (默认是webpack.config.js  默认文件名不需要使用--config 指令)

4.webpack同时支持 es6 module、commonjs规范、AMD规范

es6 module 规范:

import sum from './sum';

export default function(a, b) {
return a + b;
}

commonjs 规范

var minus = require('./minus');

module.exports = function(a, b) {
return a - b;
}

由于 AMD 是异步加载,所以会额外打包出文件,注意修改打包路径

define([
'require',
'dependency'
], function (require, factory) {
return function(a, b) {
return a * b;
}
}) require(['./muti], function(muti){
console.log(muti(2,4))
})

  

一、babel-loader

  1. 安装依赖 npm install @babel/core babel-loader --save-dev
  2. 配置webpack配置文件
 module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
// include: ['./app.js'],
exclude: '/node_modules/'
}
]
}

  二、babel-preset 针对语法

    1. env包括 es2015/es2016/es2017/latest
      一些特殊的preset babel-preset-react
      babel-preset-stage 0-3 还未发布的一些预设
    2. 安装 babel-preset npm install @babel/preset-env --save-dev
    3. 配置文件中设置babel-preset
   module: {
rules: [
{
test: /\.js$/,
use: {
loader: 'bable-loader',
options: {
presets: ['@babel/preset-env']
}
},
// include: ['./app.js'],
exclude: '/node_modules/'
}
]
}

  

    1. target 参数 根据指定的目标选择性的进行编译
      targets
      targets.browsers 'last 2 versions' '> 1%' 从一个开源项目 browserslist 和 can i use
    module: {
rules: [
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: [
['@babel/preset-env',
{
targets: {
browsers: ['> 1%', 'last 2 versions']
}
}]
]
}
},
// include: ['./app.js'],
exclude: '/node_modules/'
}
]
}

  

  1. 在 .babelrc 文件中配置
{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["last 2 version", "not ie <= 6"]
}
}]
]
}

  三、babel-plugin 针对函数和方法 arr.include new Set() Generator Map Array.from Array.prototype.includes 这些方法都没有被babel处理,所以使用babel的插件来处理

    1. babel-polifill 全局垫片,打包后代码量大,影响全局,适合产品开发
      安装: npm install babel-polyfill --save
      在入口文件中使用: import 'babel-polyfill'

    2. babel-runtime-transform 局部垫片,打包后代码量少,不污染全局,适合开发插件
      安装: npm install @babel/plugin-transform-runtime --save-dev
      npm install @babel/runtime --save

{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["last 2 version", "not ie <= 6"]
}
}]
],
"plugins": ["@babel/transform-runtime"]
}

  

webpack4 自学笔记一(babel的配置)的更多相关文章

  1. webpack4 自学笔记二(typescript的配置)

    全部的代码及笔记都可以在我的github上查看, 唤醒star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/typesc ...

  2. webpack4 自学笔记三(提取公用代码)

    全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/commonT ...

  3. webpack4 自学笔记四(style-loader)

    全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/css 引入- ...

  4. Webpack4 学习笔记六 多页面配置和devtool

    webpack 多页配置 webpack可以配置单页应用, 也可以配置多页应用. 区别在于, 单页应用entry入口只有一个, 而多页应用入口有多个 webpack配置: const path = r ...

  5. webpack4 自学笔记五(tree-shaking)

    全部的代码及笔记都可以在我的github上查看, 欢迎star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/ThreeS ...

  6. Hadoop自学笔记(五)配置分布式Hadoop环境

    上一课讲了怎样在一台机器上建立Hadoop环境.我们仅仅配置了一个NHName Node, 这个Name Node里面包括了我们全部Hadoop的东西.包括Name Node, Secondary N ...

  7. webpack4.x笔记-配置基本的前端开发环境(一)

    webpack的基本使用 webpack 本质上是一个打包工具,它会根据代码的内容解析模块依赖,帮助我们把多个模块的代码打包.借用 webpack 官网的图片: 虽然webpack4.x的版本可以零配 ...

  8. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  9. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...

随机推荐

  1. Python 高级编程 ——观察者模式

    观察者模式的定义 :定义了对象之间一对多依赖,当一个对象改变状态时,这个对象的所有依赖者都会收到通知并按照自己的方式进行更新. 按照一个气象站的例子来看观察者模式 从气象站取得数据后要在三个布告牌显示 ...

  2. bootstrap基础学习小记(二)排版、列表、代码风格、表格

    排版——标题.副标题.段落(正文文本).强调内容.粗体.斜体.强调相关的类.文本对齐 <!DOCTYPE HTML> <html> <head> <meta ...

  3. Linux Shell常用脚本整理

    轮询检测Apache状态并启用钉钉报警◆ #!/bin/bash shell_user="root" shell_domain="apache" shell_l ...

  4. Dubbo启动时服务检查

    所谓启动时服务检查是指Dubbo在启动的时候会检查当前引用的服务是否可用,不可用会抛出异常,阻止程序的初始化,以便能在上线前快速的找到问题,默认的情况下check=true 通过设置check=fal ...

  5. yarn 学习 小记

    官网:https://yarnpkg.com/zh-Hans/docs/installing-dependencies 简介:包管理工具,和npm类似主要特点:快速.安全.可靠 快速:本地安装包后,会 ...

  6. 记录jquery的ajax

    1.直接干货 ajax很简单jquery有很好的支持,原生js就不写了.总的说常用的有3个方法 $.post $.get $.ajax 具体参数参考教程http://www.runoob.com/jq ...

  7. NPM(Node Package Manager,Node包管理器)

    简介 每个Node应用都有一个包含该应用元数据的文件-package.json,包含应用名.版本号以及依赖等信息. 我们使用NPM从NPM库下载并安装第三方包. 所有下载的包以及其依赖都保存在node ...

  8. 《Python编程从入门到实践》--- 学习过程笔记(3)列表

    一.用[](方括号)表示列表,用,(逗号)分隔其中的元素. >>> name=['limei', 'hanmeimei', 'xiaoming'] >>> prin ...

  9. 基于鸢尾花数据的PCA降维处理

  10. NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows® 图形加速虚拟桌面

    NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows® 图形加速虚拟桌面. NICE DCV: 满足 LINUX 和 WINDOWS 的远程 3D 通过 NICE ...