今天有一位同事向我解释了如何创建nodejs项目,我注意到在./node_modules中有一个名为.bin的隐形文件夹。我必须说我在添加到项目后发现了这一点" bootcamp"和"凉亭"工具。什么是.bin目的?它是为什么创造的?
答案 0 :(得分:15)
这是一个文件夹,其中包含节点模块中的二进制文件(可执行文件)。
可执行文件在全局模式下,可执行文件被链接到 在Unix上使用{prefix} / bin,或直接在Windows上使用{prefix}。
在本地模式下,可执行文件链接到./node_modules/.bin中 他们可以通过npm运行脚本。 (对于 例如,运行npm时测试运行器将在路径中 测试。)
答案 1 :(得分:0)
目录node_modules/.bin
是项目使用的模块二进制文件的存储位置,通常使用符号链接指向相应模块目录中各个二进制文件的位置。例如,这就是我从npm软件包标准(JavaScript样式指南,linter和formatter)中看到二进制文件standard
$ls node_modules/.bin/standard -l
lrwxrwxrwx 1 jfolpf jfolpf 22 jul 17 08:29 standard -> ../standard/bin/cmd.js
当我运行node_modules/.bin/standard
时,的确是从npm软件包node_modules/standard/bin/cmd.js
运行standard
。此符号链接是在安装软件包后即npm install standard
这些二进制文件还允许您直接从npm脚本中使用模块。例如,您可能尚未在standard
上全局安装npm install standard -g
,这意味着您不能直接在模块主目录的终端上运行standard
。
但是您可以通过将以下内容分别添加到package.json
中来编写npm start或npm test脚本:
"scripts": {
"start": "standard src/*.js",
"test": "standard src/*.js && node myTest.js"
}
,这完全正确,因为您具有标准的项目依赖项。即使该模块不是全局模块,也不可由操作系统直接使用,npm仍可以为给定的standard
模块名称查找bin文件夹并触发已编译的二进制文件。所以确实,npm运行这样的脚本:
"start": "node_modules/.bin/standard src/*.js",