# ==Webpack 懶人包== # ---------------------------------------------------------------------------- #### ~~step.0 要有node環境ㄡ,沒有還想用webpack~~ #### step.1 開一個新資料夾 在你的工作區 #### step.2 然後cmd 進入你的資料夾 #### step.3 下 npm init --yes #### step.4 然後下 npm install webpack webpack-cli --save-dev #### step.5 新增檔案 webpack.config.js / index.js / index.html #### step.6 設定你的 webpack.config.js 如下 ```javascript= const path = require('path'); module.exports = { entry: './index.js', // 是我們的進入點,我指定路徑是 index.js 通常會用個資料夾包起來這邊先求一個方便 output: { filename: 'index.bundle.js', // 打包出來是 index.bundle.js path: path.resolve(__dirname, 'dist'), // 路徑會開個資料夾(dist)放進去 } }; ``` #### step.7 設定你的 package.json 如下 ```javascript= "scripts": { // 這是監聽模式,不用讓你瘋狂下指令 "watch": "webpack --mode development --watch", // 這是一般打包指令 "start": "webpack --mode development", // 這是最後的最後的打包指令,會幫你做程式碼壓縮 "build": "webpack --mode production" }, ``` #### step.8 打包看看有沒有問題 npm run watch ##### 有檔案代表OK ![](https://i.imgur.com/7zfLxo1.png) #### step.9 index.html 匯入打包好的檔案 ![](https://i.imgur.com/EDmFC9K.png) #### step.10 index.js console.log試試看 ![](https://i.imgur.com/TSBrcIE.png) #### step.11 接下來載入 babel-loader 讓你的新版本JS可以被通用 !!要裝這個才能用import ```javascript= npm install -D babel-loader @babel/core @babel/preset-env webpack ``` ##### --save-dev = -D //在npm 版本6以後可免打 #### step.12 新增你的 webpack.config.js 如下 ```javascript= module: { rules: [ { test: /\.m?js$/, // 使用正則表達式找 exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', // 使用babel-loader options: {presets: ['@babel/preset-env']} } } ], }, ``` --- ![](https://i.imgur.com/HRW0Nt0.png) #### step.13 測試一下 在你的 index.js 寫一些ES6的語法 我這邊寫的是 Arrow Function ```javascript= let arr = [1, 2, 3, 4, 5] arr = arr.map(num => num * 2) console.log(arr) ``` --- ##### 看到他幫你轉成低版本的JS 就成功囉 ![](https://i.imgur.com/Uye8gic.png) #### step.14 接下來我們安裝css,在webpack他連css都不認得呢 ```javascript= 1. npm install --save-dev css-loader 2. npm install --save-dev style-loader ``` #### step.15 新增style.css 並打點東西吧 ![](https://i.imgur.com/ZpkCa74.png) #### step.16 回到webpack.config.js 設定一下 ```javascript= watch: true, module: { rules: [ { test: /\.css$/, use: [ { loader: 'style-loader' // 使用 style-loader }, { loader: 'css-loader' // 使用 css-loader } ] }, ] } ``` ![](https://i.imgur.com/wVMH2Xv.png) #### step.17 匯入你的css 並測試看看 npm run watch ```javascript= import './style.css' ``` ##### OK ! ![](https://i.imgur.com/S3SE70Z.png) #### step.18 使用SASS(SCSS) 他當然也不認識SASS ```javascript= 1. npm install sass -D // 載入SASS 2. npm install sass-loader --save-dev ``` #### step.19 新增style.sass 並打點什麼 ![](https://i.imgur.com/XK2fXfe.png) #### step.20 回到webpack.config.js 設定一下 ```javascript= { test: /\.(scss|sass)$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' // 使用 sass-loader 3個loader都要用上才行 } ] } ``` ![](https://i.imgur.com/c5RV78x.png) #### step.21 在index.js 匯入你的SASS檔 ```javascript= import './style.sass' ``` ![](https://i.imgur.com/NXNFLvv.png) #### step.22 測試看看吧 ```javascript= npm run watch ``` ##### OK ! ![](https://i.imgur.com/DEDr5ur.png) #### steo.23 模組化開發 export / import ? ##### 開一個js檔 Menu.js ```javascript= export default function Menu() { console.log('It is Menu') } // 他就像return ``` ![](https://i.imgur.com/5Mqot5j.png) ##### index.js 那邊要匯入,匯入後就可以使用囉 ```javascript= import Menu from "./menu.js" console.log(Menu()) ``` ![](https://i.imgur.com/ADC5GBF.png) --- ##### OK ! ![](https://i.imgur.com/pyJqN93.png) #### 附上官網文檔 ```javascript= https://webpack.js.org/loaders/ ``` #### Webpack 是各種麻煩呢 都要自己載loader 包括ESLint喔 !! npm來的東西都放在index.js那邊是集中地 #### **引用資料** #### https://medium.com/i-am-mike/%E4%BB%80%E9%BA%BC%E6%98%AFwebpack-%E4%BD%A0%E9%9C%80%E8%A6%81webpack%E5%97%8E-2d8f9658241d https://www.youtube.com/watch?v=vyI-Ko6fvKU https://ithelp.ithome.com.tw/articles/10194056