如何从 NPM 包中排除 'bin' 个文件?
How to exclude 'bin' files from NPM package?
编辑:不确定初始测试中发生了什么,但 .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"
}
这行得通,但看起来很丑,让我觉得我错过了一些导致我违背常规的东西。
是否有更简洁的方法来实现我想要做的事情?
.npmignore
应该可以,这里是 the docs。您没有显示您尝试设置忽略的具体方式,但听起来您一直在尝试忽略 bin/ 中的所有文件,所以这就是您需要的:
# inside .npmignore
bin/
编辑:不确定初始测试中发生了什么,但 .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"
}
这行得通,但看起来很丑,让我觉得我错过了一些导致我违背常规的东西。
是否有更简洁的方法来实现我想要做的事情?
.npmignore
应该可以,这里是 the docs。您没有显示您尝试设置忽略的具体方式,但听起来您一直在尝试忽略 bin/ 中的所有文件,所以这就是您需要的:
# inside .npmignore
bin/