Heroku 评论应用寻找 app.development.json 而不是生产

Heroku review app looks for app.development.json instead of production

我有一个多包 angular 项目,主要项目需要另外两个才能成功构建。我们在 GitLab 上托管我们的项目,并通过其 CI 运行 人员,我们希望创建 运行 在生产模式下的动态审查应用程序,以查看合并请求中所做的任何视觉更改。问题是,即使我已经指定ci在生产模式下它应该运行,它在开发中运行并且要求app.development.json不存在.

在 angular.json 中,我已经指定 ci 每次构建包时,输出文件夹将是 /dist/<package-name>/

我创建了一个 server.js 文件,它获取所有静态文件并为它们提供服务。

const path = require('path');

const express = require('express');
const app = express();
// Run the app by serving the static files
// in the dist directory
app.use('/assets/config/app.production.json', express.static(path.join(process.cwd(), 'dist/registrar/assets/config/app.production.json'), {
  lastModified: false,
  cacheControl: false,
  etag: false
}));
app.use(express.static(path.join(process.cwd(), '/dist/registrar/')));
// Start the app by listening on the default
// Heroku port
app.listen(process.env.PORT || 8080);

// For all GET requests, send back index.html
// so that PathLocationStrategy can be used
app.get('/*', function(req, res) {
  res.sendFile(path.join(process.cwd() + '/dist/registrar/index.html'));
});

我添加了 heroku-postbuild 执行以下操作的脚本

"heroku-postbuild": "npm i && cd packages/theme && npm i && cd ../common && npm i && cd ../.. && npm run ng -- build -- common && npm run ng -- build -- registrar --aot --prod --source-map=true" 

让我们分解一下为什么我需要这个脚本。我有一个名为 registrar 的主包,它需要主题包和通用包 运行。我在每个包中都有一个 dependencies,这就是我 运行ning npm i 三次的原因。 我还设置了 source maps 为 true,以便在审查阶段具有调试功能。

gitlab ci 通过(因为应用程序已成功创建)但是当我被重定向到评论应用程序时,我收到一条错误消息,指出缺少 app.development.json。

每当我将 app.production.json 重命名为 app.development.json 时,应用 运行 都会成功,但处于开发模式。

在我们的例子中,我们必须禁用优化并将 heroku-postbuild 脚本更改为 ... npm run ng -- build registrar --optimization=false --aot --prod --source-map=true