我想创建多个使用相同主题的Gatsby网站。但是维护它们很困难,因为如果我在一个存储库中更新了npm软件包,那么它将不会在其他存储库中更新。因此,我必须分别更新所有它们。有没有办法一次更新所有存储库中的软件包?
/src/pages/posts
/gatsby-config.js
在所有存储库中,只需更改这两个文件即可。
答案 0 :(得分:0)
欢迎使用StackOverflow!
也许Git并不是最佳解决方案,我建议您使用bash / Powershell脚本在所有站点上触发npm更新。但是,如果您真的想使用Git进行操作,则可以在下面找到一个选择。
第0步::将您要用作站点的站点克隆为本地计算机中所有其他站点的基础
步骤1::在本地计算机上创建所需的Git遥控器。这是您需要推送和拉取**的不同站点的URL /指针**
# Syntax - git remote add <remote_name> <remote_url>
> git remote add site1 https://github.com/user/repo1.git
> git remote add site2 https://github.com/user/repo2.git
步骤2:将您不想跨站点更改的文件/文件夹添加到.gitignore文件中
> cat .gitignore
/src/pages/posts
/gatsby-config.js
**步骤3:现在,每次对这些软件包进行更改时,都可以使用以下命令将其推送到所有remotes master分支
git remote | xargs -L1 -I R git push R master
注意:使用此解决方案,当您将更新拉到其他站点时,需要修改.gitignore文件,以删除所做的输入。否则,您的网站也将开始忽略这些文件夹。 第三步参考:https://stackoverflow.com/a/18674313/10783334
答案 1 :(得分:0)
假设所有站点都位于一个文件夹中,则可以将以下代码复制到Powershell脚本中,例如“ ScriptUpdateNpm.ps1”,然后在根文件夹中运行它。
文件夹结构
- GatbsySites
- Site1
- Site2
- Site3
- ScriptUpdateNpm.ps1
$Script:Modules = @(
'Package1',
'Package2'
)
$folders = Get-ChildItem -Attributes Directory
$rootFolder = Get-Location
foreach ($folder in $folders) {
Set-Location $folder
npm update $Script:Modules
Set-Location $rootFolder
}