【问题标题】:"Bundle" backend (Node) and frontend (Angular) applications into one for production [closed]将后端(Node)和前端(Angular)应用程序“捆绑”成一个用于生产[关闭]
【发布时间】:2020-05-25 15:14:51
【问题描述】:

我有一个由 Node 提供的简单 REST 后端和一个 Angular 9 应用程序,它与它通信以管理业务逻辑。目前,它们部署在生产服务器上的两个单独文件夹中:

/opt/git/cargo-backend          Node application 
/var/www/cargo-frontend         Angular application

出于技术原因(客户有一个带有 Plesk 控制面板的新服务器),后端和前端编译的源应该“捆绑”在一起到一个新的 Git 项目中,以便上传新版本的应用程序,客户只需要在他的 Plesk 面板上执行 git pull。已部署应用的文件夹结构应如下所示:

    /
    ... bin/
    ... config/
    ... db/
    ... FRONTEND/        ---> The compiled Angular app should go in here
    ... middleware/
    ... node_modules/
    [etc]
    ... app.js
    ... package.json

如您所见,基本上它是带有文件夹 (FRONTEND) 的后端源代码,其中包含 Angular 编译的代码。我的想法是使用脚本创建一个新的 Git 项目,该脚本将复制 Node 文件夹(不带 node_modules)并编译 Angular 应用程序并将生成的文件复制到 FRONTEND 子文件夹。我正在考虑使用 Gulp 甚至是 bash 脚本,但如果有人遇到同样的情况,我想得到一些想法。

编辑

最后,我选择了使用 Git 子模块。现在FRONTEND 文件夹是一个指向已编译的Angular 应用程序存储库的子模块,因此我可以使用单个git pull --recurse-submodules 部署后端-前端。

有什么建议吗?提前致谢!

【问题讨论】:

    标签: node.js angular gulp


    【解决方案1】:

    使用 ng build 构建您的应用程序并将 dist 文件夹的所有内容放入 cargo-folder 内容中。并从节点服务器提供货物内容文件夹,请使用下面的链接作为参考。

    https://expressjs.com/en/starter/static-files.html

    【讨论】:

    • 嗨!在这种情况下,我不能这样做,因为我们需要 FRONTEND 文件夹由 nginx 在子域上提供服务。不管怎样,谢谢你的建议!
    • 那么它们是两个不同的应用程序。捆绑在一起是什么意思?
    • 您可以将后端nodejs代码放在后端文件夹中,将前端代码放在前端文件夹中。和nodejs应用程序的入口点在后端文件夹中,分别构建前端文件夹并部署在nginx上。
    • 通过“捆绑”我的意思是同时部署两个应用程序。我知道这不是描述它的最佳词(这就是我把它放在引号中的原因),很抱歉造成混淆!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2021-04-10
    • 1970-01-01
    • 2016-10-04
    • 2014-09-28
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多