webpack@4.32.2系列教程【02】- mode

栏目: 编程语言 · 发布时间: 6年前

内容简介:​ mode(模式)是webpack4.0.0新增的配置,用来指定webpack使用对应模式的内置优化;它有三个可选模式:production、development、none;默认为production。下面通过一段代码分别演示一个每一个模式打包输出的文件内容:

简介

​ mode(模式)是webpack4.0.0新增的配置,用来指定webpack使用对应模式的内置优化;它有三个可选模式:production、development、none;默认为production。

选项 描述
development 通过DefinePlugin插件将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin。
production 通过DefinePlugin插件将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 TerserPlugin.
none 通过DefinePlugin插件将 process.env.NODE_ENV 的值设为 node。使用默认的优化项。

演示

下面通过一段代码分别演示一个每一个模式打包输出的文件内容: 源码地址

第一步:编写入口文件和依赖代码

// webpack@4.32.2系列教程/demo02-mode/src/role.js
export default class Role {
  constructor(name, skill) {
    this.name = name;
    this.skill = skill;
  }
}
// webpack@4.32.2系列教程/demo02-mode/src/index.js
import Role from './role'

const role = new Role('乔峰', '降龙十八掌');
console.log(role);
console.log('process.env.NODE_ENV: ', process.env.NODE_ENV);

第二步:编写webpack配置 & 启动webpack

// webpack@4.32.2系列教程/demo02-mode/scripts/build.js
const webpack = require('webpack');

// 创建编译器对象
const compiler = webpack({
  // mode模式:webpack4.0.0新增配置,用来指定webpack使用相应模式的内置优化。
  // mode: 'development'   // 会将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin。
  // mode: 'production'    // 会将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin.
  mode: 'none'             // 使用默认优化项
});

// 启动webpack
compiler.run((err, stats) => {
  if (err) {
    console.error(err);
    return;
  }
  // 输出编译成功信息
  console.log(stats.toString({ colors: true }));
});

第三步:cd到demo02-mode文件夹下,运行node scripts/build.js

webpack@4.32.2系列教程【02】- mode

mode: none 打包输出的main.js文件内容

webpack@4.32.2系列教程【02】- mode

mode:development 打包输出的main.js文件内容

webpack@4.32.2系列教程【02】- mode

mode:production 打包输出的main.js文件内容

webpack@4.32.2系列教程【02】- mode

小结:可以看到每一种模式,打包后输出的代码都不一样,我们平时开发使用development模式,当代码需要发布上线时使用production模式。

注意:上面说的process.env.NODE_ENV并不是Node.js的process.env.NODE_ENV运行环境变量,它其实是通过DefinePlugin插件设置的一个webpack全局变量。

配置

​ mode其实可以理解为webpack4.0.0 提供一个语法糖,它的三个可选项,其实就是三套不同的webpack默认配置而已,以下是每一种模式对应的webpack配置:

mode: development

webpack@4.32.2系列教程【02】- mode

mode: production

webpack@4.32.2系列教程【02】- mode

mode: none

webpack@4.32.2系列教程【02】- mode


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件的奥秘

软件的奥秘

[美] V. Anton Spraul / 解福祥 / 人们邮电出版社 / 2017-9-1 / 49

软件已经成为人们日常生活与工作中常见的辅助工具,但是对于软件的工作原理,很多人却不是非常了解。 本书对软件的工作原理进行了解析,让读者对常用软件的工作原理有一个大致的了解。内容涉及数据如何加密、密码如何使用和保护、如何创建计算机图像、如何压缩和存储视频、如何搜索数据、程序如何解决同样的问题而不会引发冲突以及如何找出最佳路径等方面。 本书适合从事软件开发工作的专业技术人员,以及对软件工作......一起来看看 《软件的奥秘》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具