npm发布不包括我的所有文件

cal*_*lum 15 npm

npm publish是模块.它很好,但是当我从注册表安装它时,它结果是丢失了某些文件.

当我在我的模块的项目目录中运行irish-pub时,果然,输出不会列出这些文件名.

我检查过:

  • 我没有.npmignore档案.
  • 我确实有,.gitignore但这只包含/node_modules/
  • 丢失的文件是普通的JS文件,而不是默认情况下可以忽略的内容

还有什么可以阻止他们?

cal*_*lum 20

问题是我files在package.json中有一个数组.如果存在,则只发布指定的文件,其他所有文件都是有效的npmignored.

https://docs.npmjs.com/files/package.json

  • 对于任何其他有此问题的人,请注意,当没有.npmignore文件并且files数组为空时,将使用.gitignore文件。 (2认同)

lig*_*lbs 13

对于任何人不受上述答案,固定NPM包和发布方面的任何文件的package.json在目录树中,而不是仅仅在根.

在我的情况下,我有一个模块,用ejs模板化另一个模块,但因为npm将子package.json视为真实,它正在files从那里读取而不是捆绑我需要的一切.

files在任何package.json中查找,而不仅仅是你的root.


小智 11

我在package.json中也有(filesaly)的"files"属性,但是使用相对路径到以点斜杠("./")开头的文件和目录列表,但是既没有npm pack也没有npm publish用过.删除这些,都按预期工作!

所以改变:

"files": [ "./bin", "./lib" ]
Run Code Online (Sandbox Code Playgroud)

至:

"files": [ "bin", "lib" ]
Run Code Online (Sandbox Code Playgroud)

并运行:

$ npm pack
Run Code Online (Sandbox Code Playgroud)

检查gnu zipped tarfile和finaly:

$ npm publish <projectname>-<semver>.tgz
Run Code Online (Sandbox Code Playgroud)

  • 这非常有帮助。我的`package.json` 是由一个工具创建的,并按照您的描述进行了格式化。你的改变修复了它 (3认同)
  • 不敢相信相对路径也是我的问题。SMH。 (2认同)

Sas*_*r M 7

对我来说,将 .gitignore 文件和其中列出的文件放在要发布的包文件夹中是导致问题的原因。

一般来说,

"All files in the package directory are included if no local .gitignore or 
 .npmignore file exists. If both files exist and a file is ignored by .gitignore 
 but not by .npmignore then it will be included."
Run Code Online (Sandbox Code Playgroud)