如果你指的是彈性beanstalk nodejs ec2,那麼這個答案是最適合你的,因爲我花了一段時間才弄明白這一點,但事實證明它更容易比我想象:
- 繼this link了一些修改我做避免
/usr/bin/env: node: No such file or directory
問題,我添加了下面的腳本
.ebextensions/angular2deployment.config
files:
"/opt/elasticbeanstalk/env.vars" :
mode: "000775"
owner: root
group: users
content: |
export NPM_CONFIG_LOGLEVEL=error
export NODE_PATH=`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
"/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
mode: "000775"
owner: root
group: users
content: |
#!/bin/bash
. /opt/elasticbeanstalk/env.vars
function error_exit
{
eventHelper.py --msg "$1" --severity ERROR
exit $2
}
#install not-installed yet app node_modules
if [ ! -d "/var/node_modules" ]; then
mkdir /var/node_modules ;
fi
if [ -d /tmp/deployment/application ]; then
ln -s /var/node_modules /tmp/deployment/application/
fi
OUT=$([ -d "/tmp/deployment/application" ] && cd /tmp/deployment/application && $NODE_PATH/node $NODE_PATH/npm install 2>&1) || error_exit "Failed to run npm install. $OUT" $?
echo $OUT
"/opt/elasticbeanstalk/hooks/configdeploy/pre/50npm.sh" :
mode: "000666"
owner: root
group: users
content: |
#no need to run npm install during configdeploy
- 刪除
node_modules
& dist
文件夾,如果你有,兩者是不需要的。
- 運行
npm install && npm start
(這一步必須是成功的),請注意,我使用的是angular2的默認package.json
See Angular.IO Deployment
- 如果#3是成功,那麼你就可以再次
- 再刪除
node_modules
中選擇所有文件&文件夾該項目(確保選擇.ebextensions
),然後壓縮它們,不壓縮頂層文件夾(部署時會有子目錄,這會破壞部署)
- 現在您可以部署該壓縮文件並享受其樂趣了!
如果您使用MacOS的,在壓縮的同時,MacOS將會將增加MacOS的文件夾,這將打破部署,確保使用的工具,不會增加這些額外的目錄,在我的情況下,我用YemuZip
附加說明:EC2彈性魔豆將運行npm install
& npm start
,這就是爲什麼我會推薦運行它們,並確保它們是很好的在本地環境
謝謝,但西隧正是我需要上傳到我的服務器是什麼文件?在你的指南中,我用'app.min.js',vendor和index.html生成了一個dist文件夾。每次.ts文件更新後,我是否需要再次吞下它們? – TheUnreal
您需要上傳'dist'文件夾的內容。是的,您需要在每次更新後再次執行gulp ... –