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 这个变量;