由于插件可以携带参数/选项,必须在 webpack 配置中,向 plugins 属性传入的是插件的实例。
let {ClaenWebpackPlugin} = require('clean-webpack-plguin');
new CleanWebpackPlugin()
let HtmlWebpackPlugin = require('html-webpack-plugin');
new HtmlWebpackPlugin({
// 相关配置 ...
})
// webpack 的配置文件(遵循commonJS规范)
let path = require('path'); // node内置的模块
console.log(__dirname); // node的每一个模块中自带的变量,指的是当前文件夹的绝对路径
console.log(__filename); // __filename比__dirname多了一个文件的名字
console.log(path.resolve(__dirname, 'build')); // 创建一个新的文件夹,其目录为:当前文件夹/build
// 导入clean-webpack-plugin插件:用来清空之前打包生成的文件
let {CleanWebpackPlugin} = require('clean-webpack-plugin');
// 导入html-webpack-plugin插件:用来自动根据对应的html模板生成新的html文件
let HtmlWebpackPlugin = require('html-webpack-plugin');
// 这个文件要导出一个对象
module.exports = {
mode: 'development', //指定打包换环境 development/production(默认),如果在package.json配置命令时制定了,那这里就不需要了
entry: './src/A.js', // 告诉webpack打包的主入口文件(默认走的是src/index.js)
// 如果是单入口的话,值就是一个字符串类型(入口文件地址及文件名);如果是多入口的话,值就是一个对象,属性名自定义,属性值是入口文件地址及名字
output: {
// 打包之后的输出文件
// [hash]是一个参数,默认会把哈希值带上,可以限制hash的长度,例如限制为6位 [hash:6]
filename: 'bundle.[hash:6].js', // 指定打包后的文件的名字
// 还需要指定打包后的文件存放到哪里
path: path.resolve(__dirname, 'dist')// path的值需要是一个绝对路径
},
plugins: [
// 使用clean-webpack-plugin插件
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: './index.html', // 选择的模板
title: '我是新生成的html的title', // 新生成html文件的title
// 这需要将模板中的title内容换成
filename: 'newIndex.html', // 打包后的html文件名(如果不写默认跟模板文件名一样)
minify: true, // 生成的html要不要打包。默认false不打包
// chunks: []
})
],
devServer: {
port: 9999, // 打开服务的端口
open: true, // 是否自动打开浏览器
hot: true, // 启动热更新
compress: true, // 开启 gzip 压缩
contentBase: 'static', // 静态资源目录
}
/*
* devServer注意事项:
1、默认打开的是 index.html页面,如果没有,则页面显示的是静态资源目录下的文件
2、如果想要显示打包后的html文件(例如我这里的newIndex.html),则需要手动在浏览器打开的地址后面补上 /nesIndex.html
3、这里打包是打包到内存中,因此在dist文件夹中是看不到任何文件的
*/
}
{
"name": "webpack01",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production",
"mydev": "webpack --config webpack.dev.js",
"start": "webpack-dev-server"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"clean-webpack-plugin": "^3.0.0",
"html-webpack-plugin": "^4.5.0",
"webpack": "^4.44.2",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"
}
}