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] 的模式
注:哈希值就是用算法提取的標識信息,至關於人和錄入指紋,哈希值就是人錄入指紋的機器,最後的字符串就是指紋