前端開發環境配置--webpack
阿新 • • 發佈:2021-11-19
記錄一下前端開發的傳統環境配置
一、檔案結構
二、webpack.config.js
const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/js/index.js', output: { filename: 'js/built.js', path: resolve(__dirname, 'build') }, module: { rules: [ { test:/\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }, { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.(jpg|png|gif)$/, loader: 'url-loader', options: {//小於8kb會採用base64編碼格式儲存圖片 //減少了請求數量,減輕伺服器壓力 limit: 8 * 1024, // 給圖片進行重新命名 // [hash:10]取圖片的hash的前10位 // [ext]取檔案原來副檔名 name: '[hash:10].[ext]', // 問題:因為url-loader預設使用es6模組化解析,而html-loader引入圖片是commonjs// 解析時會出問題:[object Module] // 解決:關閉url-loader的es6模組化,使用commonjs解析 esModule: false, outputPath: 'imgs' } }, { //處理html檔案的img圖片(負責引入img,從而能被url-loader進行處理) test: /\.html$/, loader: 'html-loader' }, { // 處理其他資源 exclude: /\.(html|js|css|less|jpg|png|gif)/, loader: 'file-loader', options: { name: '[hash:10].[ext]', outputPath: 'media' } } ] }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html' }) ], mode: 'development', devServer: { /* 這裡注意DevServer通過HTTP服務暴露出的檔案分為兩類: 暴露本地檔案。 暴露Webpack構建出的結果,由於構建出的結果交給了DevServer,所以你在使用了DevServer時在本地找不到構建出的檔案。 contentBase只能用來配置暴露本地檔案的規則,可以通過contentBase:false來關閉暴露本地檔案。 */ contentBase: resolve(__dirname, 'build'), compress: true, //採用gzip壓縮 port: 3000, open: true //啟動後預設開啟瀏覽器 } };
三、執行指令
// npx是npm5.2之後釋出的一個命令,執行流程如下:
// 1. 去node_modules/.bin
路徑檢查npx後的命令是否存在,找到之後執行;
// 2. 找不到,就去環境變數$PATH
裡面,檢查npx後的命令是否存在,找到之後執行;
// 3. 還是找不到,自動下載一個臨時的依賴包最新版本在一個臨時目錄,然後再執行命令,執行完之後刪除,不汙染全域性環境。
//比如 npx create-react-app my-react-app,npx 將create-react-app下載到一個臨時目錄,使用以後再刪除。
//每次執行這個命令,都會重新下載依賴包,執行後刪除。
npx webpack-dev-server