亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

webpack 環境變量(18)

標簽:
webpack

小菜之前在webpack配置中区分开发环境和生产环境,但是在源代码中还不能区分当前是开发环境还是生产环境。我们可能会遇到这种情况,如在开发的时候请求地址http://www.waliblog.com/login但是项目上线后,请求地址就变成http://www.baidu.com/login。我们需要完成这种操作,需要用到DefinePlugin 文档{:target="_blank"}插件

1.安装

DefinePlugin 允许创建一个在编译时可以配置的全局常量。这可能会对开发模式和生产模式的构建允许不同的行为非常有用。如果在开发构建中,而不在发布构建中执行日志记录,则可以使用全局常量来决定是否记录日志。这就是 DefinePlugin 的用处,设置它,就可以忘记开发环境和生产环境构建的规则。之前安装过webpack就不需要安装了

yarn add webpack

2.配置

build/plugins.js

const dirpath = require('./base/path');
const config = require('./base/config');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');    //生成html文件
const { CleanWebpackPlugin } = require('clean-webpack-plugin');  //清除
const MiniCssExtractPlugin = require("mini-css-extract-plugin");  //css样式提取


let plugins = [
	new HtmlWebpackPlugin({
		title: '瓦力博客',
		template: dirpath.src + '/index.html'   //以src/index.html为编译模板
	}),
	new  MiniCssExtractPlugin({
		filename: config.NODE_ENV == 'development'?'[name.css]': `${dirpath.css}/[name].[hash].css`,
		chunkFilename: config.NODE_ENV == 'development'?'[id].css': `${dirpath.css}/[id].[hash].css`
	}),   //css提取
	new webpack.ProvidePlugin({
		_:'loadsh',
		url: ['../src/api/apipath', 'url']
	}),
+	new webpack.DefinePlugin({ 
+		IS_PRODUCTION: config.NODE_ENV == 'development'?JSON.stringify(false):JSON.stringify(true),
+	}),
	new CleanWebpackPlugin()
]

if('development' == config.NODE_ENV){
	plugins.push(new webpack.HotModuleReplacementPlugin());
}

module.exports = plugins;

api/apipath.js

let host

if(IS_PRODUCTION){
    host = 'http://www.baidu.com'
}else {
    host = 'http://www.walibo.com'
}

export const url = {
    login: `${host}/login`,         //登录
    signout: `${host}/signout`      //退出登录
}

index.js

console.log(url)

开发webpack

yarn run dev

打开控制台,会看到控制台输出:

Object
login: "http://www.walibo.com/login"
signout: "http://www.walibo.com/signout"

生产webpack

yarn run prod

打开控制台,会看到控制台输出:

{login: "http://www.baidu.com/login", signout: "http://www.baidu.com/signout"}

到此本小节就结束了,小伙伴们继续加油

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消