编辑:不确定初始测试中发生了什么,但是.gitignore
和.npmignore
现在正在根据需要排除bin文件。
我有一个简单的NPM软件包,它只是通过从GitHub下载来安装二进制文件。我的目标是将二进制文件从已发布的软件包中删除,而仅由脚本安装它。我的想法是,安装脚本可能需要根据主机平台安装不同的二进制文件,其次,不需要使用二进制文件来膨胀软件包的大小。
问题是我似乎无法让NPM忽略“ bin”文件。我尝试使用.gitignore
,.npmignore
和package.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"
}
这有效,但是看起来很丑,让我觉得我缺少了一些东西,导致我背叛了粮食。
是否有一种更清洁的方法来实现我想做的事情?
答案 0 :(得分:2)
.npmignore
应该有效,这里是the docs。您尚未显示尝试设置忽略的精确程度,但是听起来您一直在尝试忽略bin /中的所有文件,所以这是您需要的:
# inside .npmignore
bin/