如何从构建代码中分离任务运行器(Gulp-Grunt)源代码?

时间:2015-06-24 12:03:10

标签: git gruntjs workflow gulp frontend

想象一下,您正在使用像Grunt或Gulp这样的东西来改善您的FE工作流程。文件结构可能如下所示。

 - workflow-project-folder
  - source
   - ...HTML/JS/CSS preprocess code...
  - .git

你的任务选手正在制作

 - workflow-project-folder
  - source
  - build
   - ...Complied code SASS to CSS etc....
  - .git

也许你的(虚构)项目看起来像

- app/cms-project-folder
 - themes
    - assets
     - css
     - images
     - js
    - includes
    - templates
    index.pgmlang
 - system
 - libs
 - plugins
 - foo.pgmlang
 - bar.pgmlang
 .git

您控制了所有版本,因为您想要引导任务运行器和文件结构,预处理mixins等等。因此,如果没有混乱的代码库,你就不能在与项目相同的git repo中拥有它,那么构建工具和项目代码之间就会出现这种可怕的脱节。我们如何管理这个?它可以在一个回购下工作吗?例如,你如何把这个分成Wordpress,Drupal或其他文件结构?

一些次优解决方案:

  • 手动复制构建代码,这是一种单向解决方案(意味着您不能只在项目中更改代码并完成繁荣)。我们必须记得回到任务运行器项目来更改任何代码,然后再次复制。管理两个回购。
  • 将任务运行器repo克隆到我的项目仓库中,并以某种方式将构建代码链接到应用程序主题。意思是我的应用程序中有很多批量代码,只是在那里构建它。不是很干净,可能导致核心代码等其他并发症。

必须有更好的方法来链接构建代码。人们有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我喜欢使用Bower和NPM来管理构建依赖项。他们将使用bower.json文件和package.json文件来指定项目依赖项的特定版本。然后,当你刚刚克隆了你的存储库时,你需要做的就是在你的Grunt构建之前bower install && npm install

如果您有一组更加自定义的依赖项,则可以通过git submodules添加它们。在这种情况下,您将拥有主存储库,其中包含子模块特定版本的库存储库。