php - NPM - 每当有一些更新时如何将项目部署到真实服务器上
问题描述
每当将最终代码更新到真实服务器上的“git master”时,我都会使用以下脚本。
git fetch origin
git reset --hard origin/master
rm -rf /var/www/html/projectA/node_modules/
rm /var/www/html/projectA/package-lock.json
rm /var/www/html/projectA/public/js/react/entry.js // This is SPA
rm /var/www/html/projectA/public/mix-manifest.json
npm install --save
npm run production
// the following is Apache restarting...
我想知道哪种部署方法是正确的。有如下方法。
1)上面的例子
2)在真实服务器上,只做
git fetch origin
git reset --hard origin/master
npm run production
3) 在本地或 alpha 服务器和真实服务器上创建 SPA,只执行此操作。
git fetch origin
git reset --hard origin/master
我已经尝试了 1) 和 2),但是我后来发现了关于 2) 的错误,这意味着我的本地没有错误,但后来在真实服务器上出现了错误,因为已经进行了更新。
您能否告诉我是否有任何好的方法可以在真实服务器上部署您的项目?
1)和2)需要很长时间,但对于3)的情况,我不知道它是否常见和安全。根据我的经验,socket.io 在 3) 中不起作用。
解决方案
1)
应该是:
git fetch origin
git reset --hard origin/master
// node_modules is required for npm run production
// rm -rf /var/www/html/projectA/node_modules/
// package-lock.json is required to lock the package version, to make it work like your local environment
// rm /var/www/html/projectA/package-lock.json
// Usually would overwrite them when running npm run production
// rm /var/www/html/projectA/public/js/react/entry.js // This is SPA
// rm /var/www/html/projectA/public/mix-manifest.json
npm install --save
npm run production
这是对服务器执行更新的正确程序。
2)
没有npm install
,你怎么跑npm run production
?
3)
也是可行的解决方案之一。但是,有些人不喜欢它,因为他们不想将生产(构建)文件存储在git
. 由于它占用空间,您的团队必须下载它们进行开发,即使他们不需要它们。Git
用于管理源代码,而不是发布。
推荐阅读
- c# - 模型中 OnPost 中的更改绑定属性无效
- amazon-web-services - 使用 AWS CloudFormation 添加环境变量会重置 AWS Beanstalk 应用程序
- python - 将逗号分隔值从mysql加载到python中的数据框
- python - 如何使用 MSQLAlchemy (Postgres) (Python) 中的连接进行复合循环查询
- r - 当向量中的所有值都小于 10^-8 时要求代码停止
- python - Flask 中的 StringField 验证
- c# - 从 c# 中返回的对象访问属性
- project-reactor - 如何从通量中取消订阅项目
- html - 粘性页脚重叠正文内容?
- javascript - 如何在javascript中更改滚动时的背景颜色