基於 webpack 提供的接口,社區能夠貢獻各類 loader 和 plugin,組合使用能夠使得 webpack 的功能很豐富強大。
npm install html-webpack-plugin --save-dev
// webpack.config.js const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { // ... modules:[ new HtmlWebpackPlugin({ template:'./index.html', // 引用的模板 filename:'index.html', // 打包後的命名 inject:true, // 是否自動引入打包的js文件 }) ] }
// index.html <% if(process.env.NODE_ENV==='development'){ %> 1313 <% } %> <script> console.log(<%= JSON.stringify(process) %>); console.log(<%= JSON.stringify(process.env) %>); </script>
其中 JSON.stringify(process),解析爲一個對象 ,JSON.stringify(process.env) 爲空對象css
<script> console.log({"title":"browser","browser":true,"env":{},"argv":[],"version":"","versions":{}}); console.log({}); </script>
這時候的 process.env.NODE_ENV 是爲 undefined,須要手動設置其值,看 webpack.DefinePlugin ⤵️。
<% %>
規則。HtmlWebpackPlugin 的 template 使用別的後綴,將原模板的後綴相應更改便可。// webpack.config.js const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { module:{ rules:[ { test:/\.html$/, loader:'html-loader' } ] }, plugins:[ new HtmlWebpackPlugin({ template:'index.htm', // 這裏後綴改爲和 .html 不同的 filename:'index.html', inject:true, }) ] }
配置一些全局變量,開發和打包過程當中,直接將代碼中相應的變量變成配置的值。值須要進行 JSON.stringify 處理。html
// webpack.config.js const wepback = require('webpack') module.exports = { plugins:[ new webpack.DefinePlugin({ 'process.env':{ 'NODE_ENV':JSON.stringify('development') }, 'BASE_URL':JSON.stringify('https://haokur.com') }) ] }
// index.htm <%if(process.env.NODE_ENV==='development'){%> 123 <%}%> <script> console.log(<%= process %>); console.log(<%= JSON.stringify(process) %>); console.log(<%= JSON.stringify(process.env) %>); console.log(<%= BASE_URL %>); </script>
// main.js console.log(BASE_URL);
打包後:webpack
<!-- 打包後的代碼,dist/index.html --> 123 <script> console.log([object Object]); console.log({"title":"browser","browser":true,"env":{},"argv":[],"version":"","versions":{}}); console.log({"NODE_ENV":"development"}); console.log(https://haokur.com); </script>
// 打包後的 main.js console.log('https://haokur.com')
npm install webpack-dev-server --save-dev
module.exports = { devServer: { clientLogLevel: 'warning', historyApiFallback: true, hot: true, // 是否開啓熱加載替換 compress: true, host: '0.0.0.0', // 設置爲localhost時,不能用本地ip訪問 port: 8080, open: true, // 是否自動瀏覽器打開 } }
其餘參數不一一介紹,使用時查文檔 https://www.webpackjs.com/configuration/dev-server/
{ "scripts":{ "start":"webpack-dev-server", "build":"webpack" } }
# 本地開發 npm start # 打包 npm run build