如何使用分发文件发布npm包?

Nar*_*esh 101 git github node.js npm

我想发布一个包含我的源代码和分发文件的npm包.我的Github存储库包含src包含JavaScript源文件的文件夹.构建过程生成dist包含分发文件的文件夹.当然,该dist文件夹不会被检入Github存储库.

如何以某人的方式发布npm包npm install,他们srcdist文件夹一样好?目前,当我npm publish从我的git存储库运行时,它只会导致src文件夹被发布.

我的package.json看起来像这样:

{
  "name": "join-js",
  "version": "0.0.1",
  "homepage": "https://github.com/archfirst/joinjs",
  "repository": {
    "type": "git",
    "url": "https://github.com/archfirst/joinjs.git"
  },
  "main": "dist/index.js",
  "scripts": {
    "test": "gulp",
    "build": "gulp build",
    "prepublish": "npm run build"
  },
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

top*_*man 146

当你npm publish,如果你没有.npmignore文件,npm将使用你的.gitignore文件(在你的情况下你排除了dist文件夹).

要解决您的问题,请.npmignore根据您的.gitignore文件创建一个文件,而不要忽略dist文件夹.

Soure:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

  • 这个答案救了我的命,因为我已经在我的 `package.json` 中使用了 `"files": [ "dist" ]`,但由于某种原因它仍然没有发布到 NPM。将“dist”保留在“.gitignore”中,同时使用“.npmignore”而不使用“dist”就可以完成这项工作。 (3认同)
  • 感谢您的快速回复。您的回答当然是正确的,但是现在我将采用Eugene建议的“文件”方法,因为在我看来,它似乎更直接。请在他的回应下查看我的详细评论。 (2认同)
  • 非常感谢! (2认同)

小智 86

看一下package.json文件的"files"字段 https://docs.npmjs.com/files/package.json#files

从文档:

"files"字段是要包含在项目中的文件数组.如果您在数组中命名文件夹,那么它还将包含该文件夹中的文件.(除非他们会被另一条规则忽略.)

  • "文件"确实忽略了.gitignore.我的.gitignore中有"dist",但是包含在"files"中,文件夹正在发布到npm."文件"似乎是像expess和bluebird这样的流行软件包如何发布(而其他软件包使用.npmignore方法).现在,我正在使用"文件",因为它似乎是一种更直接的方式来说明要发布的内容.但感谢你们两位今天至少两次增加我对npm的了解! (6认同)
  • 我很想知道"文件"字段是否会覆盖`.gitignore`或`.npmignore`(看起来它不像我读的文档那样) - @Naresh请告诉我们哪种方法运行正常. (3认同)
  • 值得注意的是,如果指定了“文件”,那么“ *仅*”这些文件是项目中唯一包含的文件(不可打包的文件(如package.json等)除外) (2认同)