4

背景

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

源映射文件也在 dist 文件夹中生成

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

我想要达到的目标

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

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

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

我试过的

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

# standard ignores

node_modules/
karma.conf.js
spec/

# ignore src

src/

# override above and include ts files

!src/**/*.ts
!src/**/*.d.ts

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

我不确定上述是否适用于文件src夹下的 ts 文件,所以我也尝试了

!src/actualFile.ts

但结果是一样的。

4

1 回答 1

6

解决方案:

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

# ignore src

src/**/*

附加评论:

您的最后一个否定模式(即!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

于 2018-01-04T14:15:02.177 回答