---
tags: Learn
---
# Webpack
## 簡易的創建 webpack 方式
先創建一個資料夾 這裡取名為 `webpack-demo`
然後我們開啟終端機 通過 `npm init` 快速創建一個 `package.json` 文件
打開 `package.json` 找到 `scripts` 將其改為如下內容:
```js
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
// 加上這行
"build": "webpack" // 通過 npm run build 執行 webpack 打包編譯
},
```
接下來安裝 `webpack` 與 `webpack-cli` (記得加上 `--save`)
接下來我們在 `webpack-demo` 下創建一個 `src` 資料夾
裡面放入口文件(`main.js`) 與其他需要被編譯的檔案(ex: `helper.js` `all.scss`)
先創建 `helper.js` 文件 在裡面通過 `export default{}` 匯出一個函數簡單 `log` 一段話
`helper.js` 文件內容如下:
```js
export default {
fn() {
console.log("this is a js code");
},
};
```
接下來開啟 `main.js` 輸入以下內容:
```js
import helpers from "./helper";
helpers.fn();
```
完成後在 `webpack-demo` 資料夾中創建一個檔案 `webpack.config.js` (它是 `webpack` 的設定檔)
創建後在裡面貼上以下內容:
```js
// node 的 path
const path = require("path");
module.exports = {
// webpack 的入口文件
entry: "./src/main.js",
// webpack 的出口文件
output: {
// 編譯後生成的資料夾為在該項目目錄下的 dist 資料夾
path: path.resolve(__dirname, "dist"),
// 編譯後生成的文件名稱
filename: "main.bundle.js",
},
};
module.exports = config;
```
然後我們開啟終端機 切換到 `webpack-demo` 資料夾 通過 `npm run build` 執行編譯打包獲得 `dist` 資料夾
現在將 `dist` 資料夾另外用一個編輯器開啟線上瀏覽 即可看見 `helper.js` 中所寫的 `log` 了
以上是 `js` 方面的編譯打包 因為 `webpack` 內建 `js` 編譯
## css 與 sass 的編譯
接下來我們在 `src` 資料夾中創建一個 `all.css` 簡單修改 `body` 的背景色即可
然後上網搜尋 `css-loader` 它的說明文件中會要求你安裝 `css-loader`
即開啟終端機輸入以下內容:
```sell
npm install --save-dev css-loader
```
然後我們開啟 `webpack.config.js` 貼上 `css-loader` 說明文件中的模組規範
現在你的 `webpack.config.js` 內容如下:
```js
const path = require("path");
module.exports = {
entry: "./src/main.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "main.bundle.js",
},
module: {
rules: [
{
test: /\.css$/i,
use: ["style-loader", "css-loader"],
},
],
},
};
```
完成後再次開啟終端機 切換到 `webpack-demo` 資料夾 通過 `npm run build` 執行編譯打包獲得 `dist` 資料夾
再將 `dist` 資料夾另外用一個編輯器開啟線上瀏覽 即可看見背景色更改了
而 sass 則也是上網查詢 sass-loader 的說明文件 依序安裝 sass-loader 等
再到 `webpack.config.js` 中添加上 `sass-loader` 的 `rules`
最後執行 `npm run build` 重新打包即可
## devServe
在每次編譯代碼時都需要手動 npm run build 會比較費時
可以通過 webpack 提供的 webpack-dev-server 讓代碼在每次修改後自動編譯執行
安裝方式為開啟終端機輸入以下代碼:
```shell
npm i webpack-dev-server --save
```
接下來將 webpack 設定檔改為下方內容:
```js
const path = require("path");
module.exports = {
entry: "./src/main.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "main.bundle.js",
},
// 主要添加這段
devServer: {
contentBase: path.join(__dirname, "dist"),
compress: true,
port: 9000,
},
module: {
rules: [
{
test: /\.css$/i,
use: ["style-loader", "css-loader"],
},
],
},
};
```
再開啟 `package.json` 將 `scripts` 改為下方:
```js
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack serve", // 主要加這行
"build": "webpack"
},
```
現在就可以直接通過 npm start 來執行實時編譯了