【发布时间】:2019-06-12 19:06:04
【问题描述】:
场景
我已经为 API 制作了 react 应用程序和快速服务器,两者都是独立的。我没有在 express 应用程序中包含 react 文件夹。我期待使用 PM2 使用 pre/post 脚本来部署它,但我很难完全实现我的想法。
目标
- 我想为客户端和服务器运行 npm install,因为我可能会在以后需要时删除/添加包。
- 我在想,在 npm install 之后,我想构建 react 应用程序,然后移动该文件夹以用于表达(我不知道是否可以为表达静态内容提供超出父级的目录路径)。
- 然后我想启动 express 服务器,它最终会为 react 构建文件提供服务。
现在我的目录结构是
.
├── client
├── ecosystem.config.js
└── server
我很困惑,因为我没有遇到任何实现这一目标的资源。此外,我不确定 pm2 部署脚本是否可以实现这一点,或者我需要编写自己的 bash 脚本来做一些事情,然后 pm2 只会启动服务器。
这只是我所做的似乎完全错误的事情
生态系统.config.js
module.exports = {
apps : [{
name: 'API',
cwd: 'server',
script: 'server.js',
args: 'one two',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env_production: {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'node',
// host : '212.83.163.1',
// ref : 'origin/master',
// repo : 'git@github.com:repo.git',
// path : '/var/www/production',
'post-deploy' : 'cd client && npm run build'
}
}
};
【问题讨论】:
-
您可以在您的目录结构中添加相对于客户端和服务器放置 package.json 的位置吗?以及发布你的 package.json 的亮点
-
您可以使用任务运行器(
grunt或gulp)来实现此目的。并为其创建相应的部署脚本并相应地对它们进行排序。 -
为什么不编写一个 bashscript 来自动化依赖安装,获取构建文件,然后将构建文件移动到服务器。那样你会有更多的控制权。