【发布时间】:2020-07-15 08:14:02
【问题描述】:
我有一个托管在 Heroku 上的(演示)应用程序。我启用了 Heroku 的“审查应用程序”功能来启动新实例以进行拉取请求审查。这些审查实例都通过 Heroku 的附加系统为他们提供了一个新的 MongoDB(在 mLab 上)。这很好用。
在我的存储库中,我定义了一些播种器脚本来快速启动并运行测试数据库。运行yarn seed(或npm run seed)将用测试数据填充数据库。这在开发过程中效果很好,也非常适合审查应用程序。我想在 Heroku 评论应用程序的 postdeploy 挂钩中执行播种器命令,这可以通过在 app.json 文件的 environment.review 部分下指定它来完成。像这样:
{
"name": "...",
"addons": [
"mongolab:sandbox"
],
"environments": {
"review": {
"addons": [
"mongolab"
],
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}
问题是,播种器脚本依赖于一些仅用于开发的依赖项(faker、ts-node [这是一个 TypeScript 项目] 和 mongo-seeding)来执行。而且这些依赖项在 Heroku 应用的 postdeploy 阶段不可用。
我也不认为在常规构建步骤中“编译”打字稿是最好的主意。此播种脚本仅用于开发(和审查应用程序)。此外,我不确定这是否能解决缺少依赖项的问题,例如 faker。
如何解决这个问题?我缺少什么技巧吗?
我可以跳过 Heroku 主动删除开发依赖项的步骤吗?但仅适用于评论应用程序?或者更好的是,我可以“排除”我需要的几个依赖项,并且只用于审查应用程序吗?
【问题讨论】:
-
能否在 app.json 文件中将 NODE_ENV 设置为开发?
-
这对部署后可用的依赖项有影响吗?
-
你是对的! :D 我没有对此进行测试,但文档确认了这一点:devcenter.heroku.com/articles/… devcenter.heroku.com/articles/app-json-schema#environments — @mhatch73 请提交作为答案,我会接受!
-
抱歉周末请假,很高兴这有帮助!
标签: node.js typescript heroku dependencies heroku-review-app