Vue.js 学习笔记十一:Webpack之webpack 配置 plugin,mode

目录

webpack 配置

插件(plugin)

添加版权的 plugin

打包 html 的 plugin

js 压缩的 plugin

模式(mode)


webpack 配置

插件(plugin)

loader 用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。

想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建一个插件实例。

 

添加版权的 plugin

我们先来使用一个最简单的插件,为打包的文件添加版权声明,该插件名字叫 BannerPlugin,属于 webpack 自带的插件。 按照下面的方式来修改 webpack 配置文件:

// webpack.config.js
const webpack = require('webpack')

module.exports = {
  // ...
  plugins: [
    new webpack.BannerPlugin('最终版权归 stary 所有')
  ]
}

 

打包 html 的 plugin

目前,我们的 index.html 文件是存放在项目的根目录下的。我们知道,在真实发布项目时,发布的是 dist 文件夹中的内容,但是 dist 文件夹中如果没有 index.html 文件,那么打包的 js 等文件也就没有意义了。

所以,我们需要将 index.html 文件打包到 dist 文件夹中,这个时候就可以使用 HtmlWebpackPlugin 插件。

HtmlWebpackPlugin 插件可以为我们做这些事情:

自动生成一个 index.html 文件(可以指定模板来生成);

将打包的 js 文件,自动通过 script 标签插入到 body 中。

先安装 HtmlWebpackPlugin 插件:

npm install html-webpack-plugin --save-dev

使用插件,修改 webpack 配置文件中 plugins 部分的内容如下:

// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin({
		template:'index.html'
	})
  ]
}

这里的 template 表示根据什么模板来生成 index.html。还有些其他选项参考:https://github.com/jantimon/html-webpack-plugin#plugins

 

js 压缩的 plugin

在项目发布之前,我们必然需要对 js 等文件进行压缩处理。这里,我们就对打包的 js 文件进行压缩。

我们使用一个第三方的插件 uglifyjs-webpack-plugin。

先安装 uglifyjs-webpack-plugin插件:

npm install uglifyjs-webpack-plugin --save-dev

然后把插件添加到你的 webpack 配置中:

// webpack.config.js
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  // ...
  plugins: [
    new UglifyJsPlugin()
  ]
}

 

模式(mode)

通过选择 development, productionnone 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production

只需在配置对象中提供 mode 选项:

module.exports = {
  mode: 'development',
};

支持以下字符串值:

选项描述
development会将 DefinePluginprocess.env.NODE_ENV 的值设置为 development. 为模块和 chunk 启用有效的名。
production会将 DefinePluginprocess.env.NODE_ENV 的值设置为 production。为模块和 chunk 启用确定性的混淆名称,FlagDependencyUsagePluginFlagIncludedChunksPluginModuleConcatenationPluginNoEmitOnErrorsPluginTerserPlugin
none不使用任何默认优化选项

如果没有设置,webpack 会给 mode 的默认值设置为 production

在前面我们已经在 package.jsonscripts 中定义自己的执行脚本:

 "scripts": {
  "build": "webpack --mode=development"
 }

所以之前我们一直是在 development 环境下打包。设置了 mode, 这里就可以去掉 --mode=developmentpackage.json里的配置优先。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stary1993

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值