使用 npm 发布时动态添加要忽略的文件夹

Ale*_*lls 4 node.js npm npm-publish

我有一个静态.npmignore文件

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

在里面。当我发布到 NPM 时,这 3 个目录中的内容将被忽略。

我的问题是,有没有办法动态添加npm publish在命令行使用时忽略的文件夹?

就像是:

npm publish --ignore=.r2g
Run Code Online (Sandbox Code Playgroud)

这里我们可以忽略一个名为的文件夹.r2g

这是npm-publish 文档

小智 5

首先,静态解决方案:

.npmignore您可以在每个要排除的目录中包含一个文件。正如文档所述:

与 git 一样,npm 会在包的所有子目录中查找 .npmignore 和 .gitignore 文件,而不仅仅是根目录。

我在https://github.com/dral/npmignore-example(以及相应的包)中创建了一个示例npmignore-example

文件结构index.js .npmignore bar/index.js baz/index.js foo/index.js /.npmignore

root .npmignore 仅删除 baz 目录。嵌套的 foo/.npmignore 删除所有内容(从此时开始)。

安装的包仅包含

index.js
bar/index.js
Run Code Online (Sandbox Code Playgroud)

为了动态地执行此操作,您可以使用一个脚本来添加然后删除.npmignore所选文件夹中的简单文件。

echo '*' > .r2g/.npmignore && npm publish && rm .r2g/.npmignore
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要自动执行此操作,请考虑使用考虑环境变量的脚本,以便您可以使用prepublish诸如.postpublishNPM_IGNORE=.r2g npm publish

希望这可以帮助。