.npmignore:忽略给定文件类型以外的整个文件夹

Roa*_*ers 4 gitignore npm npmignore

背景

我有一个要发布到 npm 的打字稿项目。我所有的 TS 源都在一个名为的文件夹中src,它们被编译到一个名为dist.src可能包含一些 html 模板,可能包含 css 文件和其他资产。作为构建的一部分,这些资产都被复制到 dist 文件夹中。

在 dist 文件夹中也生成了 source map 文件

发布时,我只想发布 dist 文件夹,但我希望 dist 文件夹中的源映射正常工作。

我正在努力实现的目标

当我发布到 npm 时,我想包含整个dist文件夹但忽略文件夹中的所有非 ts 文件src

我需要的原因 .ts文件是 dist 文件夹中的源映射指向这些源文件。调试时,我需要原始源代码才能在浏览器中看到它。

所以,我需要忽略srcEXCEPT 中的.ts文件src

我试过的

根据我的研究,我已经尝试了以下方法,据我所知,这些方法应该有效。

# standard ignores

node_modules/
karma.conf.js
spec/

# ignore src

src/

# override above and include ts files

!src/**/*.ts
!src/**/*.d.ts
Run Code Online (Sandbox Code Playgroud)

当我使用这个文件打包时,我得到了包中的整个 src 文件夹,包括 html、css 和图像文件。

我不确定以上是否适用于直接在src文件夹下的 ts 文件,所以我也尝试过

!src/actualFile.ts
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。

Rob*_*obC 6

解决方案:

将通配符添加**/*到您的忽略src模式,使其变为:

# ignore src

src/**/*
Run Code Online (Sandbox Code Playgroud)

补充评论:

您的最后一个否定模式(即!src/**/*.d.ts)可以省略。它之前的否定模式(即!src/**/*.ts)有效地使它变得多余。

!src/**/*.ts单独使用将确保目录中的任何*.d.ts文件src也包括在内。


完成修订 .npmignore

为清楚起见,完整的修订版.npmignore(鉴于您提供的示例)应为:

# standard ignores

node_modules/
karma.conf.js
spec/

# ignore src

src/**/*

# override above and include ts files

!src/**/*.ts
Run Code Online (Sandbox Code Playgroud)