爲了說明這個問題,我使用彈出的create-react-app
作爲我的項目佈局。基於控制檯輸入的目標特定環境
我有5個環境,我的應用程序將要部署到。每個環境都有相同的服務(大部分),例如一個看起來像:
//environment 1
https://environment1.service1.foo.bar
https://environment1.service2.foo.bar
//environment 2
https://environment2.service1.foo.bar
https://environment2.service2.foo.bar
要在過去的項目中實現這一目標(角/咕嘟咕嘟)我有一個大口的任務,基本上會尋找一個變量被在
gulp build --environment environment1
這樣做的代碼通過如下:
gulp.task('environment', ['clean-environment'], function() {
log('Copying environment');
var environmentFile = config.environmentSrcDir + 'env2.js';
if (args.environment !== 'env2' ||
args.environment === 'env3' ||
args.environment === 'env4' ||
args.environment === 'evn5') {
environmentFile = config.environmentSrcDir + args.environment + '.js';
}
return gulp
.src(environmentFile)
.pipe(rename(config.environmentService))
.pipe(gulp.dest(config.root));
});
基本上指向與它內部的正確端點正確的文件以及其他perti與該環境相關的內部變量。
我的問題是,鑑於我使用create-react-app
作爲起點,所以webpack和節點腳本,我將如何完成這樣的事情。基本上我想能夠說yarn build env1
,然後項目設置一個常量或文件的常量作爲'積極'常數可以這麼說。
好的,這是有道理的。所以我真正的擔心的是我想說一些類似「紗線生產」的東西,並針對這種環境。我的api調用包含環境(不是'production.blah.com',而是'east.myapp.com/service'),無論環境是什麼,所有的api調用都需要在環境中包含環境特定的字符串網址。那麼,如何通過應用程序將其擴散到一個可以將服務調用的基本uri進行剔除的地方? – erp
您可以創建不同的'.env'文件,併爲每個環境定義。然後創建配置文件,您可以在其中存儲.env變量的別名,然後在您的服務中使用它。 根據您的npm start/test/build命令,將創建不同的.env文件,並且您將能夠訪問您聲明的變量。 – TariqN
我仍然遇到了一些針對特定文件@TariqN的問題。我明白你需要創建不同的'.env'文件,每個文件都有相關的變量。但是,在'build'時間或'開始'時間的情況下,我怎樣才能將其中的一個選爲.env文件呢?我在你發佈的教程中看不到這一點。 – erp