# Webpack 學習資料:https://neighborhood999.github.io/webpack-tutorial-gitbook/ 學習影片:https://www.youtube.com/watch?v=IZGNcSuwBZs&t=2098s ### 安裝 npm init npm install webpack webpack-cli 此時package.json的dependencies就會出現webpack scripts要新增一個build "scripts": { "build": "webpack --config prod.config.js" } 新增webpack.config.js設定檔 webpack.config.prod.js #### 範例註解(可依照需求區分prod dev設定檔) ```javascript const path = require('path'); module.exports = { mode:'dev' entry: path.resolve(__dirname, 'src/index.js'),//編譯前檔案的檔名 output: {//output - 宣告 webpack 輸出的形式。 path:path.resolve(__dirname, 'dist'),//存放 bundle 檔案的位置。 filename: 'bundle.js',//檔案名稱 } module: { loaders: [{ test: /\.scss$/,//一個正規表達式,用來找出要套用 loader 的檔案。 loaders: ['style', 'css','sass']//指定哪些 loader 是用於匹配前述 test (正規表達式)的檔案。 }] } plugins: [ new webpack.optimize.UglifyJsPlugin({ compressor: { warnings: false, }, }), new webpack.optimize.OccurrenceOrderPlugin(), new HtmlWebpackPlugin({ template: './src/index.html' })//指定了一個搭配 ./src/index.html template 的 HtmlWebpackPlugin,它會產生一個檔案叫做 index.html 在我們的 dist 資料夾,而網頁的內容是 ./src/index.html。 ], } ``` ```javascript // webpack.config.dev.js var path = require('path') var webpack = require('webpack') var HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { devtool: 'cheap-eval-source-map', //source map 就是儲存了原始碼與編譯後程式碼的對應關係之檔案,讓你在開啟 Devtool 時,能讓瀏覽器透過載入 source map 的方式幫助你定位原始碼位置,方便除錯。 entry: [ 'webpack-dev-server/client?http://localhost:8080', 'webpack/hot/dev-server', './src/index' ],//兩個新的進入點將伺服器連結到瀏覽器 output: { path: path.join(__dirname, 'dist'), filename: 'bundle.js' }, plugins: [ new webpack.HotModuleReplacementPlugin(), new HtmlWebpackPlugin({ template: './src/index.html' }) ], module: { loaders: [{ test: /\.css$/, loaders: ['style', 'css'] }] }, devServer: { contentBase: './dist',//服務的檔案來自哪裡。 hot: true//是否啟用Hot Module Replacement //port open...還有其他設定可以增加 } } ```