因需求只涉及微信小程序部逮,這里僅以小程序?yàn)槔榻B。
具體搭建過程參照官網(wǎng)目錄 快速開始嫂易,搭建完成后使用命令npm dev:weapp
運(yùn)行兄朋、npm run build:weapp
進(jìn)行打包。
查看package.json可知怜械,npm dev:weapp
命令內(nèi)容實(shí)際上是運(yùn)行npm run build:weapp
加上--watch
颅和。
需解決問題: 開發(fā)時(shí)需使用開發(fā)環(huán)境API請(qǐng)求接口、提交測(cè)試時(shí)需要使用測(cè)試環(huán)境API請(qǐng)求接口宫盔、上線時(shí)需要使用線上環(huán)境API請(qǐng)求接口融虽;開發(fā)過程中可任意切換這三種環(huán)境進(jìn)行本地調(diào)試。
Trao本身提供process.env.NODE_ENV進(jìn)行區(qū)分開發(fā)和打包(線上)環(huán)境灼芭。顯然有额,這并不能滿足如上需求。
如下彼绷,筆者提供的解決方案:
- 打開文件package.json席舍;
- 修改
"build:weapp": "taro build --type weapp"
為"npm build:weapp:dev": "cross-env BUILD_ENV=dev taro build --type weapp",
; - 修改
"dev:weapp": "npm run build:weapp -- --watch"
,為"dev:weapp": "npm run build:weapp:dev -- --watch",
; - 添加命令
"test:weapp": "npm run build:weapp:test -- --watch",
、"prd:weapp": "npm run build:weapp:prd -- --watch",
秽荞、"build:weapp:test": "cross-env BUILD_ENV=test taro build --type weapp",
艰争、"build:weapp:prd": "cross-env BUILD_ENV=prd taro build --type weapp"
;
做了如上修改后,通過命令npm run dev:weapp
或者 npm run test:weapp
或者 npm run prd:weapp
運(yùn)行項(xiàng)目即可猜旬,對(duì)應(yīng)三種不同的開發(fā)環(huán)境脆栋。更重要的是,由于這些命令實(shí)際是對(duì)打包命令的引用洒擦,故上線前你只需執(zhí)行npm run prd:weapp
即可椿争,執(zhí)行此命令后亦可在本地進(jìn)行代碼修改等操作。
你以為這么做就成功了嗎熟嫩?秦踪??
做完以上修改后你會(huì)發(fā)現(xiàn),在項(xiàng)目中根本無(wú)法獲取到process.env.BUILD_ENV椅邓。經(jīng)過在整個(gè)項(xiàng)目中進(jìn)行關(guān)鍵字NODE_ENV
搜索后柠逞,在項(xiàng)目文件config/index.js
下做出如下更改:
module.exports = function(merge) {
const buildConfig = {
env: {
BUILD_ENV: process.env.BUILD_ENV
}
};
return merge(
{},
config,
process.env.NODE_ENV === "development"
? require("./dev")
: require("./prod"),
buildConfig
);
};
完結(jié),撒花景馁。