如何从NPM软件包中排除“ bin”文件?

时间:2020-02-06 18:37:51

标签: npm npm-publish

编辑:不确定初始测试中发生了什么,但是.gitignore.npmignore现在正在根据需要排除bin文件。

我有一个简单的NPM软件包,它只是通过从GitHub下载来安装二进制文件。我的目标是将二进制文件从已发布的软件包中删除,而仅由脚本安装它。我的想法是,安装脚本可能需要根据主机平台安装不同的二进制文件,其次,不需要使用二进制文件来膨胀软件包的大小。

问题是我似乎无法让NPM忽略“ bin”文件。我尝试使用.gitignore.npmignorepackage.json的'files'属性,以及将bin文件放在bin以外的文件夹中,看来NPM坚持包括“ bin”文件。相关的package.json基本上是:

{
  "bin": {
    "my-bin": "./bin/my-bin"
  },
  "files": [ "bin-install.sh" ],
  "scripts": {
    "preinstall": "./bin-install.sh"
  },
}

作为一种解决方法,我可以像这样处理'bin'目录的存在:

"scripts": {
  "preinstall": "./bin-install.sh",
  "prepublishOnly": "! [[ -d bin ]] || mv bin tmp",
  "prepack": "npm run prepublishOnly",
  "postpublish": "! [[ -d tmp ]] || mv tmp bin",
  "postpack": "npm run postpublish"
}

这有效,但是看起来很丑,让我觉得我缺少了一些东西,导致我背叛了粮食。

是否有一种更清洁的方法来实现我想做的事情?

1 个答案:

答案 0 :(得分:2)

.npmignore应该有效,这里是the docs。您尚未显示尝试设置忽略的精确程度,但是听起来您一直在尝试忽略bin /中的所有文件,所以这是您需要的:

# inside .npmignore
bin/