今天有一位同事向我解释了如何创建nodejs项目,我注意到在./node_modules中有一个名为.bin的隐形文件夹.我必须说,我在添加到项目"bootcamp"和"bower"工具后发现了这一点.什么是.bin目的?它是为什么创造的?
ala*_*rev 20
这是一个文件夹,其中包含节点模块中的二进制文件(可执行文件).
可执行文件在全局模式下,可执行文件在Unix上链接到{prefix}/bin,或在Windows上直接链接到{prefix}.
在本地模式下,可执行文件链接到./node_modules/.bin,以便它们可以通过npm运行.(例如,当运行npm test时,测试运行器将位于路径中.)
Joã*_*ira 12
该目录node_modules/.bin
是存储项目使用的模块的二进制文件的地方,通常使用符号链接到相应模块目录中的各个二进制文件。例如,这就是我standard
从 npm 包标准(JavaScript 样式指南、linter 和格式化程序)中查看二进制文件的方式
$ ls node_modules/.bin/standard -l
lrwxrwxrwx 1 jfolpf jfolpf 22 jul 17 08:29 standard -> ../standard/bin/cmd.js
Run Code Online (Sandbox Code Playgroud)
当我运行时,node_modules/.bin/standard
我确实在运行node_modules/standard/bin/cmd.js
npm 包standard
。这个符号链接是在安装包时创建的,也就是说,在npm install standard
这些二进制文件还允许您直接从 npm 脚本中使用模块。例如,您可能没有使用standard
全局安装npm install standard -g
,这意味着您不能standard
直接从终端在模块的主目录中运行。
但是你可以通过分别添加以下内容来编写npm start或npm test脚本package.json
:
"scripts": {
"start": "standard src/*.js",
"test": "standard src/*.js && node myTest.js"
}
Run Code Online (Sandbox Code Playgroud)
鉴于您将标准作为项目依赖项,这是完全正确的。即使该模块不是全局的并且不能被操作系统直接使用,npm 也可以查找给定standard
模块名称的 bin 文件夹并触发编译后的二进制文件。所以确实,npm 运行这样一个脚本:
"start": "node_modules/.bin/standard src/*.js",
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9117 次 |
最近记录: |