2017-04-03 49 views
1

我正在通過節點部署我的角度cli應用程序。我使用npm start而不是ng serve --prod節點 - 設置角度cli環境

有沒有辦法從npm中實現--environment=prod設置,所以它會用environment.prod.ts而不是environment.ts

我Dockerfile:

FROM node 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app 
RUN npm install 
COPY . /usr/src/app 
EXPOSE 4200 
CMD ["npm", "start"] 

頂部的package.json的:

{ 
    "name": "asgard2", 
    "version": "0.0.0", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve --host 0.0.0.0", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e" 
}, 
[...] 

要開始生產,我可以運行:

ng serve --prod 

但我不能這樣做:

npm start --prod 

或者至少,當我這樣做時,它仍然作爲調試部署。我在部署中很可能做錯了事。

+0

不明確。你的npm啓動腳本是做什麼的? –

+0

@JBNizet:一切都是由angular-cli設置的默認設置,但您提出了一個非常好的觀點。我應該先建立,然後部署和服務。 –

+0

啊,所以你想讓npm開始執行'ng serve --prod'而不是默認的'ng serve'?只需編輯你的package.json並在'ng serve'後添加'--prod'。 –

回答

1

據我瞭解,你要部署你的應用到實際生產的Web服務器。使用ng build --prod。這會在dist目錄下生成一組靜態文件,這些靜態文件可以由任何能夠提供靜態文件的Web服務器提供服務。

在Docker容器中安裝生產Web服務器(例如Apache或Nginx),並使其服務於這些靜態文件。

如果需要,您也可以使用基於節點的Web服務器,但如果目標僅僅是爲靜態文件提供服務,我真的不明白這一點,Apache或Nginx可能會更有效。

1

你可以進入你的environment.ts文件並更改

export const environment = { 
    production: false 
}; 

export const environment = { 
    production: true 
}; 
+0

但是當我不在生產時,我會有反向刺激。我想我可以在部署期間將environment.ts的內容複製到environment.prod.ts。 –