package.json bin的作用

许多包有一个或多个可执行文件(executable),他们希望直接导入到全局路径里面,这样可以直接使用,npm很容易达到这点,
A lot of packages have one or more executable files that they’d like to install into the PATH. npm makes this pretty easy (in fact, it uses this feature to install the “npm” executable.)
使用这个,在package.json提供一个映射到本地本地文件名的bin字段,一旦被引入后,npm将软链接这个文件到prefix/bin里面,以便于全局引入,或者在./node_modules/.bin/目录里
To use this, supply a bin field in your package.json which is a map of command name to local file name. On install, npm will symlink that file into prefix/bin for global installs, or ./node_modules/.bin/ for local installs.
比如,myapp可能像这样:
For example, myapp could have this:

{ "bin" : { "myapp" : "./cli.js" } }

所以,当你引入myapp时,他创建了一个软链接到 cli.js文件
So, when you install myapp, it’ll create a symlink from the cli.js script to

/usr/local/bin/myapp

如果你有一个单一可执行文件,他的名字应该是和package名字一样,那样你就可以,想使用字符串一样使用它,比如:
If you have a single executable, and its name should be the name of the package, then you can just supply it as a string. For example:

{ "name": "my-program"
, "version": "1.2.5"
, "bin": "./path/to/program" }

would be the same as this:

{ "name": "my-program"
, "version": "1.2.5"
, "bin" : { "my-program" : "./path/to/program" } }

请确保你的cli.js文件里面最开头写上 #!/usr/bin/env node,否则文件里的脚本不会再Node环境下执行
Please make sure that your file(s) referenced in bin starts with #!/usr/bin/env node, otherwise the scripts are started without the node executable!

 

在安装第三方带有bin字段的npm,那可执行文件会被链接到当前项目的./node_modules/.bin中,在本项目中,就可以很方便地利用npm执行脚本(package.json文件中scripts可以直接执行:'node node_modules/.bin/myapp');

在安装时,如果是全局安装,npm将会使用符号链接把这些文件链接到prefix/bin,如果是本地安装,会链接到./node_modules/.bin/。

比如,要使用myapp作为命令时可以这么做:

{ "bin" : { "myapp" : "./cli.js" } }

这么一来,当你全局安装myapp,npm会从cli.js文件创建一个到/usr/local/bin/myapp的符号链接(这使你可以直接在命令行执行myapp)。

许多包有一个或多个可执行文件希望被安装到系统路径。它是一个命令名和本地文件名的映射。

关于scripts中写这个:node node_modules/.bin/myapp

当需要node环境时就需要加上node前缀,既然加上了node,那node_modules/.bin也是必须的(node myapp会去查找当前路径下的myapp.js,这样肯定是不对的);有一种简便的方式:在上文的cli.js中第一行写入#!/usr/bin/env node,告诉系统用node解析,这样命令就可以简写成myapp
 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐