GitHub 完整配置文件地址: https://github.com/yhtx1997/webpack4-Instancejavascript
因为篇幅过长分三次发布,建议按顺序看html
主要内容java
安装 webpack 前请确保已安装 nodejs 和 npmnode
npm init -y
复制代码
这里的init表示初始化一个 npm 项目, -y 表示所有选 yes,不加的话会提示输入一些项目信息,好比项目名,版本号,做者...webpack
npm install webpack webpack-cli webpack-dev-server -D
复制代码
这实际上是一条合并的命令,拆开就是git
npm install webpack -D
npm install webpack-cli -D
npm install webpack-dev-server -D
复制代码
现阶段的目标是让它能运行起来
如今目录下应该有一个文件夹,两个 .josn 文件es6
官方推荐移除文件中的入口配置,这样能够防止意外发布你的代码。github
"main": "index.js"
复制代码
并加上私有属性配置web
"private": true
复制代码
运行webpack 能够用在命令行输入 npx webpack
可是这样的运行方式在配置了开发环境和生产环境时,再运行须要写不少参数
因此添加一个 npm 脚本,以后运行 输入 npm run test 便可,有参数后在后边追加便可算法
"test": "webpack"
复制代码
最后看起来像这样
在 webpack 4 中,能够无须任何配置使用,作完上边的操做后能够在命令行输入 npm run test 运行 webpack(这里的 test 是在上边 scripts 里本身定义的),可是会显示这样的结果。
这是由于入口文件不存在,webpack 默认是将当前目录下的 ./src/index.js 当作要打包的文件(入口),新建一下 src 目录和 index.js 文件,就能够正常了。
这时会生成一个 dist 目录以及目录里有一个 main.js,这是默认的打包好的文件及目录(出口),这样一个 webpack 算是初始化完成了。
注:
在上面也说了 webpack4 如今能够无需使用任何配置文件就可使用,可是有些东西仍是弄成本身喜欢的比较好
在当前目录下新建一个 webpack.config.js 文件,并写入代码
const path = require('path');//[1]
module.exports = {
//[2]
};
复制代码
webpack --config my.config.js
复制代码
为了能证实入口确实改了有效果,我将 ./src/index.js 的文件名改成 2048.js,并放到./src/js/2048.js ; 并修改代码
const path = require('path');
module.exports = {
entry: "./src/2048.js"//add
};
复制代码
在不加上面代码时会报以前的找不到入口的错误,加了之后会显示正常输出了,而且 ./dis 下会多一个 2048.js 的文件,
entry 不光能赋值绝对路径的字符串,还能赋值多个路径的数组或对象
entry: './src/2048.js'//单入口 字符串传参
entry: ['./src/js/2048.js','./src/js/1024.js','./src/js/512.js']//多入口 数组传参
entry: {//多入口 对象传参
2048: './src/js/2048.js',
1024: './src/js/1024.js',
512: './src/js/512.js'
}
复制代码
出口跟入口不太同样,入口能够有不少,可是只有一个输出配置。
output: {
filename: '2048.js',
path: 'C:/Users/GengShaojing/Desktop/2048/dist'
}
复制代码
output: {
filename: '[name].js',//[1]
path: path.resolve(__dirname, 'dist')//[2]
}
复制代码
output: {
filename: "[name].[chunkhash].js",
path: path.resolve(__dirname, 'dist')
}
复制代码
filename 支持如下几个属性,且能够共存
[name] 模块名称 就是以前说的文件名或者对象的 key 值
[id] 模块标识符 应该是入口传入顺序的下标值从 0 开始
[hash] 模块标识符的哈希值 这个我理解的不太清楚,只知道他能够生成字符串
[chunkhash] 内容的哈希值 根据内容生成字符串
[contenthash] 提取的内容生成的哈希值 根据提取的内容生成字符串
注:官方推荐 [name] 加上 [chunkhash] 的模式
注:哈希值就是用算法提取的标识信息,至关于人和录入指纹,哈希值就是人录入指纹的机器,最后的字符串就是指纹