如何在.npmignore中的目录中将单个文件列入白名单?

m90*_*m90 10 package-managers gitignore node.js npm npmignore

我试图在包npm的目录中只下载一个文件npm install.

该目录看起来像:

+- dist/
   +- 1.0.0/
   +- 1.0.1/
   +- ...lots of other dirs...
   +- file.js
Run Code Online (Sandbox Code Playgroud)

我希望npm忽略所有内容,但file.js我尝试在我的内容中包含以下内容.npmignore:

dist/
!dist/file.js
Run Code Online (Sandbox Code Playgroud)

然而,dist当我安装软件包时,npm仍然会下载所有目录.我认为这应该是有效的,.gitignore但显然我在这里遗漏了一些东西.

kra*_*dio 9

是的,它正在使用glob模式:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

但我会采用不同的方法:

dist/*
dist/.*
!dist/file.js
Run Code Online (Sandbox Code Playgroud)

为了不忽略整个文件夹,但它的内容(可能不需要第二行).


Cir*_*四事件 6

建议:白名单而不是黑名单

回答用例时,我建议将您想要发布的内容明确列入白名单,filespackage.json不是使用 条目将其列入黑名单.npmignore,因为这样您就更有可能不会意外发布错误的文件。另请参阅: https: //medium.com/@jdxcode/for-the-love-of-god-dont-use-npmignore-f93c08909d8d

这是一个具体的示例包,看起来有点像:

{
  "files": [
    "gitignore",
    "cirodown",
    "cirodown.js",
    "cirodown.embed.min.css",
    "cirodown.local.min.css",
    "cirodown.min.css",
    "index.js",
    "main.liquid.html",
    "main.scss",
    "nodejs.js"
  ],
}
Run Code Online (Sandbox Code Playgroud)