Webpack5 初步環境建置
1.安裝node.js
node.js
版本建議要18以上(可以使用nvm版本控制)
$ nvm ls
$ nvm ls-remote --lts
$ nvm i 18.20.4
$ nvm use 18.20.4
2.手動建立資料夾
- 快速建立
package.json
,輸入:
$ npm init -y
- 安裝
webpack
基本套件:
webpack
是主要核心
webpack-cli
是webpack工具包
webpack-dev-server
是執行環境工具
$ npm i webpack webpack-cli webpack-dev-server -D
- 補充說明:
-D
是 --save-dev
的縮寫
- 沒有加-D的套件會安裝在package.json的"dependencies"底下,表示生產環境和開發環境都會使用到,例:bootstrap。
- 有加-D的套件會安裝在package.json的放在"devDependencies"底下,表示開發期間的工具和插件,在生產環境下不需要運行,例:webpack-cli。
you project
├─── node_modules/
└─── package.json
3.在package.json設置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{
"scripts":{
"start": "webpack --mode development", //開發模式
"build": "webpack --mode production", //生產模式
"dev": "webpack serve --mode development --open" //渲染模式+自動打開瀏覽器
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"devDependencies": {
"webpack": "^5.95.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.1.0"
}
}
|
--mode development 是開發模式:編譯完成的程式碼不會壓縮檔案較大
--mode production 是生產模式:編譯完成的程式碼會自動壓縮檔案較小
webpack serve 利用暫存空間渲染畫面在伺服器
4.手動建立檔案:
- 建立
webpack.config.js
檔:
1
2
3
4
5
6
7
8
9
10
|
const path = require('path');
module.exports = {
entry: './src/js/main.js', //進入點
output: {
path: path.resolve(__dirname,'dist'), //設置輸出檔案位置(絕對路徑)
filename: './js/main.js', //輸出檔案名稱
clean: true, //是否自動刪除舊檔案
}
}
|
entry可用物件方式傳多一次設置多個進入點
- 在進入點位置手動新增
main.js
檔,然後在裡面寫:
1
|
console.log('Hello World!!')
|
you project
├─── node_modules/
├─── src/
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── package.json
└─── webpack.config.js
5.執行專案:
- 在終端機執行,就可以自動生成
dist
以及js/main.js
檔:
$ npm run start
you project
├─── dist/
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── node_modules/
├─── src/
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── package.json
└─── webpack.config.js
6.建立index.html:
- 安裝
html-webpack-plugin
:
$ npm i html-webpack-plugin -D
- 在
src
資料夾底下新增index.html
,並簡單就夠基本html樣板:
1
2
3
4
5
6
7
8
9
10
11
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
|
- 在
webpack.config.js
檔案新增:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //引入套件
module.exports = {
entry: './src/js/main.js',
output: {
path: path.resolve(__dirname,'dist'),
filename: './js/main.js',
clean: true,
},
plugins: [
new HtmlWebpackPlugin({
template: 'src/index.html', //定義index.html路徑
})
]
}
|
you project
├─── dist/
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── node_modules/
├─── src/
│ │
│ ├─── index.html
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── package.json
└─── webpack.config.js
7.再次編譯最終成果:
- 在終端機輸入:
$ npm run start
- 接著再輸入:
$npm run dev
- 最後就能看到資料夾結構如下:
you project
├─── dist/
│ │
│ ├─── index.html
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── node_modules/
├─── src/
│ │
│ ├─── index.html
│ │
│ └─── js/
│ │
│ └── main.js
│
├─── package.json
└─── webpack.config.js
其他相關