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

package.json bin的作用相关推荐

  1. node工程中package.json文件作用是什么?里面的^尖括号和~波浪号是什么意思?

    1.package.json文件的作用是什么? package.json是包的说明文件,主要有以下3个作用: (1)相当于你本地项目的一个文档说明. (2)允许你指定你项目中所使用的node包的版本. ...

  2. package.json文件||项目依赖||开发依赖

    package.json文件 node_modules文件夹的问题 package.json文件的作用 项目描述文件,记录了当前项目信息,例如项目名称.版本.作者.github地址.当前项目依赖了哪些 ...

  3. 大前端快闪:package.json文件知多少?

    最近在公司某项目参与了一些前端工作,作为后端抠脚大汉,改点前端细节磕磕绊绊,改点大前端.工程化.HTTP交互倒也还能做到柳暗花明. 于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读 ...

  4. package.json文件是个什么东东?

    package.json文件 一.node_modules文件夹的问题 文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,,传输速度会很慢很慢. 复杂的模块依赖关系需要被记录,确保模块的版本和 ...

  5. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  6. Nodejs系列之package.json文件

    文章の目录 1.node_modules文件夹的问题 2.package.json文件的作用 3.项目依赖 4.开发依赖 5.package-lock.json文件的作用 写在最后 1.node_mo ...

  7. package.json 中的 bin 字段作用

    我们在下载 npm 包后,查看 npm 包的 package.json 有些包会有 bin 字段 例如我们常用的 webpack-cli 包 那么 bin 字段有什么用呢? 官方文档链接 许多软件包都 ...

  8. 前端项目中package.json到底是什么,又充当着什么作用呢?一文来带你了解package.json!

    大家好,我是纸飞机,想必大家都在项目中经常看见package.json.package-lock.json.node_modules这三剑客,那么他们到底是什么呢?又有什么作用呢?今天就来带你们理一遍 ...

  9. package.json中bin字段的用处

    如下是一段package.json中的代码,其中可以看到版本号等信息,除此之外还能看到一个bin字段,本文主要讲的就是bin字段的用处 {"name": "mys-gj& ...

  10. package.json作用

    这个文档的内容是你必须要知道的,它必须是JSON文本格式.每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元 ...

最新文章

  1. boost::geometry::ring_type用法的测试程序
  2. C++ delete与 delete []区别
  3. HTTP 头部字段 Cache Control max-age = 0 和 no-cache 的区别
  4. 丰田pcs可以关闭吗_别只知道开不坏,现在的丰田还有这些厉害绝招!
  5. linux刷命令脚本,linux – 如何调试bash脚本并获得每个命令的执行时间
  6. ajax实现局部删除,Express+AdminLTE+hbs+Ajax实现局部刷新终极版(第二部分)
  7. 蔚来测开提前批面试(一面)
  8. LeetCode946-验证栈序列
  9. numpy 利用np.std() 计算出现 inf
  10. 子龙山人Learn Emacs in 21 Days: day 7 学习笔记
  11. Java 代码调用 Maven 命令
  12. Mysql 分片,大数据量时扩容方案
  13. 使用jQuery实现轮播图
  14. 什么是网易企业邮箱客户端专有协议?
  15. 魔方还原神器,有了它,没有还原不了的魔方(15)
  16. 高德地图如何取消订单_高德地图怎么取消订单
  17. 安装qtp时,出现I/O设备错误的报错,该怎么办呢?
  18. 动态网站基本上都是有后台的,静态的网站就是纯HTML的网站的,这样的网站是没有后台的
  19. Qt应用程序图标设置任务栏图标设置
  20. 经验解答:计算机专业是什么?这个专业的大学生以后能干嘛?

热门文章

  1. MySQL讲义第50讲——select 查询之查询练习(八):查询每门课程成绩前三名的学生信息
  2. 导弹防御系统(LIS)
  3. SparkSQL ClickHouse RoaringBitmap使用实践
  4. 关于微信小程序中的取整
  5. laravel + xampp 除了根目录其他路由都是404的解决方法
  6. 好看的小武与hs文件的偶遇
  7. 数据结构 实验三 算术表达式求值 栈的基本操作
  8. Excel筛选后无法复制粘贴成数值解决办法
  9. SCI检索号识别一法:UT-WOS与UT-ISI
  10. DZZ云桌面1.3下载 多图介绍