我是一个为客户制作网站的自由职业者。我有自己的基于React和Node的devstack。目前,当我开发一个新网站时,我只是复制我编写的最后一个项目,并修改路由、页面等。当我添加一些新功能(将webpack更新为1到2等等)时,我必须在每个项目中手动完成(或者根本不做)。
我希望有一种更专业的方法来解决这个问题。你能给我推荐一些关于它的材料或态度吗?
我目前的目标是:在我的devstack (框架)中创建一个repo (私有github,并在验证后将其公开)。每次我开始一个新项目时,我都会分叉它(这样它就会保持上游的原点)并开始开发。每次我更改一些核心功能或者添加一些我想要在其他项目中使用的东西时,我都想以某种方式将其推送到devstack代码库中。我也可以手动将此代码复制到devstack,但我不想编写两次,因此一种更好的方法会有所帮助。
我该怎么做,我的想法好吗?基本上,一些建议,如果它是有意义的,一些链接到一篇文章将对我有足够的帮助。谢谢。
发布于 2017-01-10 06:08:36
有多种方法可以做到这一点,它们都取决于有多少脚手架代码被重用、修改或丢弃。
如果您的代码非常通用,并且允许在不接触脚手架代码的情况下进行自定义,那么我在这里真的推荐最后一种策略。
您可以使用像yeoman这样的生成器。您可以为yeoman创建自己的模板并维护该模板。这样,每次你创建一个新站点,你唯一要做的就是用你的模板调用yo
,如果需要的话,提供一些选项给它,然后你就可以开始工作了。
当涉及到使用上游VonC has given一次性更新所有项目时,这是一个使用forking的好方法。
如果你想完全避免分支,并且你可以模块化你的脚手架,你可以使用git submodules。
使用git子模块,你可以将你的“框架”代码从你的客户端代码中分离出来。有多种策略。
这在很大程度上取决于您的设置,但一种策略是为每个客户端创建一个具有预定义结构的存储库,并将scaffold作为子模块添加。
看一下关于子模块和子存储库的this question。
最后,如果您的scaffold非常通用,那么没有什么可以阻止您创建一个模块,该模块将使用所需的文件和选项填充您的项目。
在项目的package.json
dependencies
中,您可以添加:
"my-scaffold": "git+ssh://git@gitlab.com:user/repo.git#ref"
然后,在您的scaffold的package.json
中,您可以在安装时运行deployment script:
"scripts": {
"install" : "node tools/deploy.js"
}
每次构建项目时,您都可以检查当前部署的版本与安装在node_modules中的版本,并重新运行部署脚本以更新项目中需要的脚本。
干杯!
https://stackoverflow.com/questions/41372921
复制相似问题