【问题标题】:Git ignore generated extensionsGit忽略生成的扩展
【发布时间】:2017-01-22 21:13:40
【问题描述】:

我想将 JavaScript (.js) 文件置于 git 控制之下。

但是,如果存在 TypeScript (.ts) 文件,我想忽略关联的 .js 文件。

有没有办法用 git 实现这一点?

编辑:最好不要更改目录和重构所有现有代码。

【问题讨论】:

  • 我没有用过打字稿,但你不能让打字稿在不同的目录中生成javascript文件吗?
  • 要么在文件中附加一些标识符,例如_somefile.js,要么将JS输出到不同的目录,例如generated/somefile.js
  • @redneb,@vlaz。移动文件不是我的要求。我至少希望我的 git repo 整洁。因此,我想知道是否可以在不必移动现有文件和重构所有现有路径的情况下完成(不是我不想自己)

标签: javascript git


【解决方案1】:

执行此操作的典型方法是将任何已编译的输出放在某个分发目录中。你可以这样组织你的目录结构:

src/
  ... various JavaScript files, etc.

dist/
  ... compiled output from any build tool you're using

然后在 git 中,您可以忽略 dist 目录,并假设任何将拉下该 repo 并对其进行处理的人将手动运行构建工具,或者它将作为安装过程。

换句话说,它更容易组织它而不依赖于一组特定的 git 功能。这是 JavaScript 世界中非常常见的模式。

如果您不采用该方法,另一种方法是向您要忽略的文件添加一些标识符。例如,您可以在所有要忽略的文件前面加上_,然后将此规则添加到您的.gitignore(请参阅this answer 了解以下内容的原因):

\_*

第二种方法有一些缺点:

  1. 您使用的其他库可能使用以相似标识符开头的文件名,并且会发生冲突
  2. 很难维护;如果发生冲突或者您改变了对结构的想法,您可能希望稍后更改标识符,并且您必须返回所有文件并更改名称(当然,这可以是自动化的,但它可能会很痛苦)

希望对您有所帮助。

【讨论】:

  • This is a pretty common pattern in the JavaScript world. 不仅在 JS 中。几乎任何产生生成输出的东西都会这样做。一般来说,来源/生产的区别几乎是普遍的。获取所有生成的文件并将它们(以某种方式)捆绑到可交付成果中将是一个构建步骤,在这种情况下,这可能表示为获取所有 *.js 文件并将它们放在 /js/ 目录或其他东西中,但不包括*.ts 因为最终产品没有使用。
  • @JoshBeam:我投了赞成票,因为这是一个很好的建议。但是,它没有回答我的问题。我不允许移动现有文件和重构。因此,我想找到另一种方法来消除这些文件以供 git 考虑。
猜你喜欢
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2011-07-19
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多