如何从 git 中排除打字稿编译的文件

Posted

技术标签:

【中文标题】如何从 git 中排除打字稿编译的文件【英文标题】:how to exclude typescript compiled files from git 【发布时间】:2016-03-01 16:48:42 【问题描述】:

我有一个带有几个 asp.net 5 项目的 Visual Studio 解决方案。在每个项目中,我都有一个 wwwroot 目录,在这个目录中还有一个 app 目录,其中包含 html 视图、.js 和 .map 文件,它们是在这个位置编译的打字稿文件。 使用标准配置,这些文件包含在签入中。如何配置 .gitignore 文件,以便忽略解决方案中每个项目的 wwwroot\app 目录的每个子目录中的所有 .js 和 .map 文件?

【问题讨论】:

如果您有多个项目并且所有项目都需要相同的 git 忽略规则集,那么您可以使用 全局 Git 忽略规则 概念来提及单个 gitignore 文件并在所有项目中使用您的项目,而不是创建单独的 gitgnore 文件。但是这个全局 git 忽略文件不会是共享副本,您的其他队友也不会受益。请参考Atlassian Git查看步骤。 【参考方案1】:
wwwroot/app/**/*.js
wwwroot/app/**/*.map

** 将匹配 app 中的所有内容,以及多个级别的子目录。

【讨论】:

如果你的 js 不是编译文件,例如库,会发生什么? @DiegoGonzález 库应该放在单独的文件夹中,而不是 /app(例如 /lib/node_modules 等) @Jay 将输出放入单独文件夹的一个问题是您的代码没有在与 src 完全相同的上下文中运行,因此,例如,如果您 fs.readFile('./foo.md') 那么它将失败 - - 除非您有单独的复制任务将所有非 js 文件移动到 /dist 目录中。 IMO tsc 应该允许您使用自定义文件扩展名输出,例如.compiled.js 然后可以显式忽略 *.js 也覆盖了*.js.map @Technotronic 那不是*.js.*吗?【参考方案2】:

将以下行添加到您的 .gitignore:

# Ignores compiled TypeScript files
**/wwwroot/app/**/*.map
**/wwwroot/app/**/*.js

你可以阅读更多关于 gitignore 和支持的模式here。

** 递归匹配子目录。第一个是针对项目的,第二个是因为你提到的

在 wwwroot\app 目录的每个子目录中

【讨论】:

以上是关于如何从 git 中排除打字稿编译的文件的主要内容,如果未能解决你的问题,请参考以下文章

git merge 后打字稿更改未编译

打字稿:从类型中排除所有必需的属性

打字稿构建从 node_modules 文件夹中获取错误

更改打字稿目标会影响编译性能吗?

如何使用 npm 命令编译打字稿?

通过webpack生产模式编译时如何忽略打字稿错误