本人微信公众号:前端修炼之路,欢迎关注。css
再过一天,就是2019年了,在这里祝你们新年快乐,阖家欢乐,万事大吉。🎅🎅🎅html
在文章以前,简单的回顾一下2018主要完成的事情,与君分享,共同进步。💪💪💪前端
如下是正文。webpack
以前的文章学习了如何加载资源,这一节学习如何将资源输出。git
对项目作一些修改,建立一个js文件。web
src/print.jsnpm
export default function printMe() {
console.log('I get called from print.js!');
}
复制代码
在程序入口文件中,引用这个文件。这个文件的内容,对上一节的代码作了修改。只保留了加载css样式的代码。数组
src/index.jsbash
import _ from 'lodash';
import printMe from './print.js'
import './style.css';
function component() {
let element = document.createElement('div');
let btn = document.createElement('button');
// Lodash, currently included via a script, is required for this line to work
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
element.classList.add('hello');
// add a button to print log
btn.innerHTML = 'Click me and check the console!';
btn.onclick = printMe;
element.appendChild(btn);
return element;
}
document.body.appendChild(component());
复制代码
修改配置文件,将新增长的文件进行打包。微信
webpack.config.js
const path = require('path');
module.exports = {
entry: {
app: './src/index.js',
print: './src/print.js' // 也能够不打包这个文件,由于在index.js中已经引入了
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}]
}
};
复制代码
这时,配置文件的entry
入口,改为了对象形式,容许传入多个文件。其中的对象属性名app
和print
,在输出文件属性output.filename
中以占位符[name]
的形式展现。
由于加载了css
,因此添加了相应的loader。
注意:
其实在入口文件中,能够不将
src/print.js
文件打包,由于在打包生成的dist/app.bundle.js
文件中,已经包含了src/print.js
文件中的内容。
在页面文件中引用新打包好的文件。
dist/index.html
<!doctype html>
<html>
<head>
<title>Output Management</title>
<script src="./print.bundle.js"></script>
</head>
<body>
<script src="./app.bundle.js"></script>
</body>
</html>
复制代码
最后执行打包命令npm run build
以后,会在dist
目录发现新生成的打包文件。
如今设想一下,假如修改了原始文件index.js
和print.js
的名字,该怎么办呢?难道手动一个个去修改文件名吗?若是文件数量扩大到20个呢?
经过webpack插件能够很自动化的完成上面的需求。
添加html-webpack-plugin
和clean-webpack-plugin
这两个插件。第一插件是用来生成html页面的,会自动将output.filename
输出文件添加到页面中。第二个插件是用来清理/dist
目录的,防止项目目录过于杂乱。
首先安装这两个插件
npm install --save-dev html-webpack-plugin clean-webpack-plugin
复制代码
而后修改配置文件,引用这两个插件。
webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry: {
app: './src/index.js',
print: './src/print.js' // 也能够不打包这个文件,由于在index.js中已经引入了
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}]
},
plugins:[
new HtmlWebpackPlugin({title: 'Output Management'}),
new CleanWebpackPlugin(['dist'])
]
};
复制代码
在plugins
中,以数组的形式,添加了这两个插件。html-webpack-plugin
接受的title
属性,就是生成的html
页面中title
。clean-webpack-plugin
接受的参数,就是要清理的目录名称。
如今若是执行打包命令npm run build
,会发现webpack先删除了dist
目录,而后生成相应的文件。若是打开index.html
文件,会发现咱们在header
部分引入的js文件,已经被webpack移动到了body
。说明咱们的配置文件生效了。
这样的话,就解决了上面提到的问题,之后文件名字修改以后,只须要修改配置文件中相应名字,而后执行打包命令就能够了。
说明: 我将本小节代码托管到了腾讯云开发者平台,若是须要查看这节内容,请查找Output Management目录便可。
以上就是指南手册中的Output Management部分。总结一下主要内容:
下一篇笔记整理webpack官方文档的指南手册剩余部分,敬请关注。
(待续)
相关文章