我想在弹性beanstalk上运行node.js应用程序。我有一个客户端,由一个咕噜咕噜的工作(玉,少,concat等)构建我从git中排除了这个文件夹
我可以通过由grunt buildClient
grunt-cli
进行本地运行
我在我的包grunt
grunt-cli
和dev-dependencies
我想在启动应用程序之前运行grunt构建,我已经在.ebextensions/app.config
container_commands:
01_build_client:
command: grunt buildClient
我猜我的cwd是/tmp/deployment/application/
但有Fatal error: Unable to find local grunt
说。我猜grunt-cli已安装,但为什么会出现这个错误?
我也尝试将咕噜咕噜的工作放在postinstall
的{{1}}部分,但这也不起作用。
如何在EBS实例上构建我的grunt作业?
答案 0 :(得分:2)
在paas上运行Grunt时,最好在项目中本地安装grunt-cli和grunt的本地副本。这样它始终可用,并且是您需要的确切版本。然后,您运行npm install
而不是grunt
,以便postinstall
正常运行。
例如,您的package.json
可能如下所示:
"grunt": "0.4.5",
"grunt-cli": "0.1.13",
答案 1 :(得分:1)
您可以使用--gruntfile <pathToGruntfile>
上的grunt command
选项指定gruntfile的路径。但是,在运行此操作之前,您还需要npm install grunt
,否则您将收到相同的错误。
答案 2 :(得分:1)
我试图在弹性beanstalk上获取webpack bundilng时遇到了类似的问题。我发现当弹性beanstalk运行npm安装时,它包含--production
标志。这意味着您需要将dev依赖项移动到依赖项块中。
其他让我感到困惑的是,eb似乎没有运行postinstall
脚本,这真的很烦人!我确实发现它运行prestart
脚本。
我的package.json
文件最终看起来像这样:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"prestart": "node node_modules/webpack/bin/webpack.js"
},
"dependencies": {
"backbone": "^1.2.1",
"backbone.marionette": "^2.4.1",
"webpack": "^1.9.10",
...
}
}