2016-09-14 47 views
1

我想保留JavaScript(.js)文件在git控制之下。Git忽略生成的扩展

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

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

编辑:最好不改变目录并重构所有现有的代码。

+2

我没有使用打字稿,但不能让打字稿在不同的目录中生成JavaScript文件? – redneb

+1

可以在文件中附加一些标识符,例如'_somefile.js'或将JS输出到不同的目录,例如'generated/somefile.js' – vlaz

+0

@ redneb,@ vlaz。移动文件不是我的要求。我至少想让我的git回购整洁。因此,我想知道是否可以在不移动现有文件并重构所有现有路径的情况下完成(并非我不想自己) – chriskelly

回答

5

执行此操作的一种典型方法是将任何已编译的输出放入某个分发目录中。你可能会组织目录结构如下所示:

src/ 
    ... various JavaScript files, etc. 

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

然后在Git中,你可以忽略dist目录,并假定人谁去拉下来的是回购和它的工作要么运行手动构建工具,或者它将作为安装过程的一部分自动构建。

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

如果你不去那个方法,另一种方法是给你想要忽略的文件添加一些标识符。例如,你可能会在前面加上你想要_忽略,然后添加此规则应用到所有文件的.gitignore(见this answer为什么以下工程):

\_* 

也有一些缺点,这第二种方法:

  1. 您使用可使用具有类似标识启动文件名会有冲突
  2. 很难维持其他库;如果碰到某种碰撞,或者您改变了对结构的想法,您可能希望稍后更改标识符,并且必须返回所有文件并更改名称(当然,这可以是自动的,但它可能会是一种痛苦)

希望有所帮助。

+2

'这是JavaScript世界中相当常见的模式.'不仅在JS 。几乎任何产生输出的东西都会这样做。一般来说,来源/产生的区别几乎是普遍的。这将是一个构建步骤,以获取所有生成的文件并将它们(以某种方式)捆绑到一个可交付物中,在这种情况下,可以表示为将所有'* .js'文件放入'/ js /'目录或者不包括'* .ts',因为它没有使用最终产品。 – vlaz

+0

@vlaz很好的说明,谢谢你的评论。 –

+0

@JoshBeam:我赞成,因为这是一个很好的建议。但是,它不回答我的问题。我不允许移动现有文件和重构。因此,我想找到另一种方式消除这些文件供git考虑。 – chriskelly