首页 > 解决方案 > 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) 中不起作用。

标签: phpreactjslaravelnpmsingle-page-application

解决方案


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用于管理源代码,而不是发布。


推荐阅读