在 Heroku review-app post-deploy 步骤中使用 NodeJS 开发依赖
Using NodeJS development dependencies in Heroku review-app post-deploy step
我在 Heroku 上托管了一个(演示)应用程序。我启用了 Heroku 的 "review app" 功能来启动新实例以进行拉取请求审查。这些评论实例都通过 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
阶段不可用。
我也不认为 "compiling" 常规构建步骤中的打字稿是最好的主意。此播种器脚本仅用于开发(和审查应用程序)。此外,我不确定这是否会解决缺少依赖项的问题,例如 faker
.
人们会怎么做呢?我遗漏了什么技巧吗?
我可以跳过 Heroku 主动删除开发依赖项的步骤吗?但仅适用于评论应用程序?或者更好的是,我可以 "exclude" 只需要几个我需要的依赖项,并且只用于审查应用程序吗?
Heroku docs 表示当 NODE_ENV
变量包含除 "production"
之外的任何内容时,devDependencies
将不会在构建步骤后被删除。
为确保这仅发生在 Heroku 评论应用程序中,您可以在 app.json 文件的 environments.review
部分下设置 NODE_ENV
变量。以下配置应该可以解决问题:
{
"name": "...",
"addons": [
"mongolab"
],
"environments": {
"review": {
"addons": [
"mongolab:sandbox"
],
"env": {
"NODE_ENV": "development"
},
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}
我在 Heroku 上托管了一个(演示)应用程序。我启用了 Heroku 的 "review app" 功能来启动新实例以进行拉取请求审查。这些评论实例都通过 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
阶段不可用。
我也不认为 "compiling" 常规构建步骤中的打字稿是最好的主意。此播种器脚本仅用于开发(和审查应用程序)。此外,我不确定这是否会解决缺少依赖项的问题,例如 faker
.
人们会怎么做呢?我遗漏了什么技巧吗?
我可以跳过 Heroku 主动删除开发依赖项的步骤吗?但仅适用于评论应用程序?或者更好的是,我可以 "exclude" 只需要几个我需要的依赖项,并且只用于审查应用程序吗?
Heroku docs 表示当 NODE_ENV
变量包含除 "production"
之外的任何内容时,devDependencies
将不会在构建步骤后被删除。
为确保这仅发生在 Heroku 评论应用程序中,您可以在 app.json 文件的 environments.review
部分下设置 NODE_ENV
变量。以下配置应该可以解决问题:
{
"name": "...",
"addons": [
"mongolab"
],
"environments": {
"review": {
"addons": [
"mongolab:sandbox"
],
"env": {
"NODE_ENV": "development"
},
"scripts": {
"postdeploy": "npm run seed"
}
}
}
}