制作我自己的框架并将其用作项目的上游

use*_*212 20 git open-source

我是一名为客户制作网站的自由职业者.我有自己的基于React和Node的devstack.目前,当我开发一个新站点时,我只是复制我编写的最后一个项目并修改路由,页面等.当我添加一些新功能(更新webpack 1到2等等)时,我必须在每个项目中手动完成(或者我根本不做).

我想对此采取更专业的方法.你能向我推荐一些材料或态度吗?

我目前的目标是:使用我的devstack(框架)拥有一个repo(私有github并在验证后公开).每次我开始一个新项目时,我都会将它分叉(以便它保持为上游原点)并开始开发.每当我改变一些核心功能或添加我想要在其他项目中的东西时,我想以某种方式将其推送到devstack repo.我也可以手动将此代码复制到devstack,但我不想写两次,所以更好的方法会有所帮助.

我怎么能这样做,我的想法好吗?基本上,一些建议,如果它完全有意义,一些文章的链接将帮助我.谢谢.

Von*_*onC 12

"每当我改变一些核心功能或添加我想在其他项目中拥有的东西时,我想以某种方式将其推送到devstack回购."

推送devstack回购(你为所有项目分配的原始回购)是一个很好的第一步,但它不会神奇地将这个新功能"传播"到你的所有其他回购.

但是,您可以利用三角工作流程:

https://i.stack.imgur.com/Lx7do.png

从那里,使用git 2.9或更多,配置:

git config --global pull.rebase true
git config --global rebase.autoStash true
Run Code Online (Sandbox Code Playgroud)

最后,每次您想要更新您的一个仓库以从推送到的功能中受益devstack:

cd /path/to/one/of/mine/projects
git checkout mybranch
git fetch upstream
git rebase upstream/master
Run Code Online (Sandbox Code Playgroud)


Coy*_*ote 6

有多种方法,它们都取决于您的脚手架代码有多少被重用,修改或丢弃.

如果您的代码非常通用并且允许自定义而无需触及脚手架代码,那么我真的会推荐最后一个策略.


你可以使用像自耕农这样的发电机.您可以为yeoman创建自己的模板并维护模板.这样,每次创建新网站时,您唯一需要做的就是yo使用模板调用,在必要时为其提供一些选项,让事情顺利进行.


当使用上游VonC一次更新所有项目时,已经给出了一个很好的分叉方法.


如果你想完全避免分叉,你可以模块化你的脚手架,你可以使用git子模块.

使用git子模块,您可以将"框架"代码与客户端代码分开.有多种策略.

这在很大程度上取决于您的设置,但一种策略是为每个具有预定义结构的客户端创建存储库,并将您的脚手架添加为子模块.

看看有关子模块和子存储库的这个问题.


最后,如果您的脚手架非常通用,则无法阻止您创建一个模块,该模块将使用所需的文件和选项填充您的项目.

在您的项目中,package.json dependencies您可以添加:

"my-scaffold": "git+ssh://git@gitlab.com:user/repo.git#ref"
Run Code Online (Sandbox Code Playgroud)

然后在您的脚手架中,package.json您可以在安装时运行部署脚本:

"scripts": {
  "install" : "node tools/deploy.js"
}
Run Code Online (Sandbox Code Playgroud)

每次构建项目时,都可以检查当前部署的版本与node_modules中安装的版本,然后重新运行部署脚本以更新项目中所需的脚本.

干杯!