使用 Gulp.js 将版本化和构建(缩小)文件正确提交到 GitHub

Posted

技术标签:

【中文标题】使用 Gulp.js 将版本化和构建(缩小)文件正确提交到 GitHub【英文标题】:Correctly committing versioned, and built (minified) files to GitHub with Gulp.js 【发布时间】:2015-10-03 14:39:53 【问题描述】:

背景信息

我正在编写一个小型 javascript 库,如果其他人最终想要贡献,我希望尽可能简化贡献流程。目前,我在对 dist 文件夹中的构建文件进行版本控制时遇到问题。

我正在使用:

Git 用于版本控制,Github 用于存储库管理。 Gulp.js 用于构建源文件以及提交和推送版本化文件

Gulp 运行一个构建任务,该任务将 JavaScript 文件连接并压缩到 all.min.js 文件中,并将该文件放在 dist 文件夹中。我遇到的麻烦是基于该文件夹进行发布。

我尝试过的事情

1. 让正常的 git 流程发生,即使是构建的文件。我的意思是,当用户创建一个对 master 的拉取请求时,其中一个差异将是 all.min.js。这通常会导致冲突,并且当拉取请求被确认时,all.min.js 不再标记为“version1.x.x”。

2. 我的下一个想法是将dist文件夹添加到.gitignore,然后在gulp构建过程中使用npm包注释掉dist文件夹,提交并推送,然后取消注释该行。

这当然行不通,因为只要仓库中存在 dist 文件夹,.gitignore 就不适用于该特定项目。

3. 最后一个想法是在开发人员开发时,将这些文件构建到build 文件夹,并将该文件夹添加到.gitignore。这样,当我使用 Gulp 来“发布”时,我没有文件冲突,并且标记是一致的。发布任务,只有那些任务会推送到dist 文件夹。但是,我仍然觉得这种方式太容易出错了。但是,也许这个解决方案是最好的。

问题: 我如何改进这些流程中的任何一个,以使开发周期保持一致?

【问题讨论】:

【参考方案1】:

...只要仓库中存在 dist 文件夹,.gitignore 就不会适用于该特定项目。

如果你已经提交了dist并且有提交者的re悔,你可以通过运行来使用this answer:

git rm --cached <file-or-directory>

我很想知道你最终做了什么。

【讨论】:

以上是关于使用 Gulp.js 将版本化和构建(缩小)文件正确提交到 GitHub的主要内容,如果未能解决你的问题,请参考以下文章

前端构建工具gulp之基本介绍

01. 人生苦短 gulp.js的简介与安装

Gulp基础教程

详解常用的gulp命令

前端构建工具Gulp.js 你知多少..(webpack/gulp/grunt)

前端Gulp系列教程:简介和安装