【问题标题】:Angular PreRendering / Ng Universal deploymentAngular PreRendering / Ng Universal 部署
【发布时间】:2020-02-20 01:59:51
【问题描述】:
真的需要在部署时复制 node_modules 吗?由于我们拥有 840 个节点模块(运行 Angular 7 + Material + Ng-Select),通常需要 7 分钟编译/运行单元测试/部署到登台环境的过程变成了 40 分钟的过程。问题归结为近 10 万个小文件的系统 I/O。
我正在尝试找出一种方法来保持 SSR,但是当开发人员等待大部分时间来查看他们在暂存环境中的变化时,这将成为一场失败的战斗。
有没有办法将节点模块捆绑并缩小到 main.server.ts 文件中?
【问题讨论】:
标签:
node.js
angular
node-modules
server-side-rendering
【解决方案1】:
您只需将/dist 文件夹内容移动到您的部署区域。
根据 Universal 的版本,/dist/server 和 /dist/browser 应该会生成所需的内容。
生成的server.js 通常相当大,因为它包含您的大部分应用程序以及在渲染过程中使用所需的依赖项。
例如,这是一个简单的 Dockerfile 示例
FROM node:12-alpine
WORKDIR /app
COPY ./dist /app/dist
EXPOSE 4000
CMD ["node", "/app/server"]
注意我将目标目录保留为dist -- 如果更改此文件夹,我相信匹配更改需要在server.ts 中完成:
const distFolder = join(process.cwd(), 'dist/{app}/browser');
它查看 /dist 相对于启动节点进程时当前工作目录 (WORKDIR) 所在的位置。