webpack学习笔记7-插件
前面已经说明了,webpack
是一个打包工具
在webpack
中,还有个概念,叫插件plugins
- loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。
- 插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。
- 用来解决一些loaders无法处理的事情
webpack 插件是一个具有 apply 属性的 JavaScript 对象。apply 属性会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。
例如,我们想在打包的时候,把A文件夹中的数据,放到B文件夹中,可以使用copy-webpack-plugin
来进行文件的复制行为
copy-webpack-plugin文档
修改原来的文件目录
1 | webpack_learn |
由于使用了copy-webpack-plugin
模块,根据commonJs
规范,我们需要require
这个文件,并且使用npm
安装它
1 | npm install copy-webpack-plugin #或者yarn add copy-webpack-plugin |
我们将config.webpack.js
文件修改为如下内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36//config.webpack.js
const path = require('path')
+ const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
//配置函数接受两个参数env和argv
//env:环境对象
//Webpack-CLI 的命令行选项
entry: './src/index.js', //设置默认
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [{
//里面为匹配的规则
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}]
},
+ plugins: [
+ new CopyWebpackPlugin([
+ {
+ from: path.join(__dirname, '/staticFrom/'),//将staticFrom文件夹内所有文件
+ to: path.join(__dirname+'/dist/')//复制到根目录下/dist/文件夹内
+ }
+ ])
+ ]
}
然后再执行
1 | npm run build #或者yarn build |
然后,打包后的文件目录,变成了
1 | webpack_learn |
test.txt
文件就被复制到了dist
目录下
这样就成功的使用了webpack
插件中的复制插件copy-webpack-plugin
我们在每次打包的时候,如果是同名文件,则会覆盖之前的文件,但是,并没有清除,已经更改后的文件,例如dist
目录下的main.js
此时,我们可以使用clean-webpack-plugin
插件来清理dist
目录,但时刚才,我们的index.html
是自己手动新建的,如果清除掉,还需要新建,为了自动化完成这个工作,有两种方案
- 使用
copy-webpack-plugin
插件,复制一个index.html
文件到dist
目录,方法参考上方 - 使用
html-webpack-plugin
插件,每次都创建一个index.html
文件
首先我们使用npm
安装它们
1 | npm install clean-webpack-plugin #或者yarn add clean-webpack-plugin |
然后修改config.webpack.js
1 | //config.webpack.js |
然后再执行
1 | npm run build #或者yarn build |
这样,dist
目录,每次都会清理并新建index.html
文件了
原文作者: IT梅
原文链接: http://www.meixiaohan.com/2019/08/15/webpack_learn_7/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)