我在Heroku上托管了一个(演示)应用程序。我已启用Heroku的“审阅应用程序”功能来启动新实例以进行拉取请求审阅。这些评论实例都通过Heroku的附加系统为其提供了一个新的MongoDB(在mLab上)。这很好。
在我的存储库中,我定义了一些种子脚本,以快速启动并运行测试数据库。运行yarn seed
(或npm run seed
)将用测试数据填充数据库。这在开发过程中效果很好,并且对于评论应用程序也是完美的。我想postdeploy
在Heroku评论应用的挂钩中执行seeder命令,可以通过environment.review
在app.json
文件部分下指定它来完成。像这样:
{
"name": "...",
"addons": [
"mongolab:sandbox"
],
"environments": {
"review": {
"addons": [
"mongolab"
],
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}
问题是,种子脚本依赖于某些仅开发的依赖项(faker
,ts-node
[这是一个TypeScript项目]和mongo-seeding
)来执行。这些依赖项在postdeploy
Heroku应用程序阶段不可用。
我也不认为在常规构建步骤中“编译”打字稿是最好的主意。该种子脚本仅用于开发(和审阅应用程序)中。此外,我不确定是否可以解决缺少依赖项的问题faker
。
怎么会这样呢?我缺少任何技巧吗?
我是否可以跳过Heroku主动删除开发依赖项的步骤?但仅适用于评论应用程序吗?甚至更好的是,我是否可以仅将我需要的两个依赖项“排除”,并且仅用于审查应用程序?
在Heroku的文档表明,当NODE_ENV
变量包含什么,但"production"
,则devDependencies
不会生成工序后除去了。
为了确保仅适用于Heroku评论应用,您可以在app.json文件NODE_ENV
的environments.review
部分下设置变量。以下配置应该可以解决问题:
{
"name": "...",
"addons": [
"mongolab"
],
"environments": {
"review": {
"addons": [
"mongolab:sandbox"
],
"env": {
"NODE_ENV": "development"
},
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句