bower-name-cli 是一个 cli 工具,用来查询 bower 中是否存在某个 package name。
bower 曾经是一个很热门的前端 package manager,npm 曾经主要用于后端包管理,不过 2016 年中 bower 开发者就开始 deprecate bower 了,建议开发者使用 npm、yarn 等工具。
依赖:
{
"dependencies": {
"bower-name": "^2.0.0",
"log-symbols": "^1.0.2",
"meow": "^3.4.2"
},
"devDependencies": {
"ava": "*",
"pify": "^2.2.0",
"xo": "*"
}
}
bower-name-cli
其实是 bower-name
的 cli 版。
执行文件 cli.js
顶部有一行 shebang
:
#!/usr/bin/env node
/usr/bin/env
是一个程序,在这里它接收一个 node
参数,程序会从 $PATH
中寻找 node
的路经,于是在终端运行这个文件时,可以直接输入 ./cli.js
执行,不需要 node ./cli.js
。
从 test.js 可以看到如何在 node.js 代码中执行一个 js 文件:用的是 child_process.execFile()
,因为 cli.js
加了 shebang,所以可以直接把这个文件的路径传入 execFile()
去执行。
cli 工具的 package.json
都有一个 bin
字段,bower-name-cli
也不例外。
bower-name
是 bower-name-cli
的基础,它其实只是向 bower 的 API 发起一个请求,确定是否存在某个 package。请求方法是 HEAD
,它只会返回 headers
,不会返回 body
。bower-name
根据 status code 来判断是否存在某个 package,它不关注 body,所以不需要用 GET
,而且 HEAD
通常比 GET
更快。
相关文章:
$PATH
这个变量;