文档章节

package.json字段全解

chenkangyao
 chenkangyao
发布于 2017/09/08 16:55
字数 1107
阅读 6
收藏 0
点赞 0
评论 0

Name 必须字段。

小提示:

不要在name中包含js, node字样; 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头; 这个名字可能在require()方法中被调用,所以应该尽可能短; Version 必须字段。

Description 可选字段,必须是字符串。npm search的时候会用到。

Keywords 可选字段,字符串数组。npm search的时候会用到。

Homepage 可选字段,没有http://等带协议前缀的URL。

Bugs 可选字段,问题追踪系统的URL或邮箱地址;npm bugs用的上。

{ "url" :"http://github.com/owner/project/issues",

"email" :"project@hostname.com"

}

License 可选字段。

如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:

{ "license" : "BSD-3-Clause" } Author, contributors 都是可选字段。author是一个人,contributors是一组人。

Author的格式如下:

{ "name" : "Barney Rubble", "email" : "b@rubble.com", "url" : "http://barnyrubble.tumblr.com/" } 这种格式也可以:

"Barney Rubble b@rubble.com (http://barnyrubble.tumblr.com/)" Files 可选字段,项目包含的一组文件。如果是文件夹,文件夹下的文件也会被包含。如果需要把某些文件不包含在项目中,添加一个”.npmignore”文件。这个文件和”gitignore”类似。

Main 可选字段。这个字段的值是你程序主入口模块的ID。如果其他用户需要你的包,当用户调用require()方法时,返回的就是这个模块的导出(exports)。

Bin 可选字段。很多的包都会有执行文件需要安装到PATH中去。

这个字段对应的是一个Map,每个元素对应一个{ 命令名:文件名 }。

{ "bin" : { "npm" : "./cli.js" } } Directories 用于指示包的目录结构:

Directories.lib 指示库文件的位置。

Directories.bin 和前面的bin是一样的,但如果前面已经有bin,那么这个就无效。

除了以上两个,还有Directories.doc& Directories.man & Directories.example。

Repository 可选字段。用于指示代码存放的位置。

"repository" : { "type" : "git" , "url" : "http://github.com/npm/npm.git" }

"repository" : { "type" : "svn" , "url" : "http://v8.googlecode.com/svn/trunk/" } Scripts 可选字段,object。Key是生命周期事件名,value是在事件点要跑的命令。参考npm-scripts。

Config 可选字段,object。

Config对象中的值在Scripts的整个周期中皆可用,专门用于给Scripts提供配置参数。

Dependencies 可选字段,指示当前包所依赖的其他包。

{ "dependencies" : { "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "elf" : "~1.2.3" , "two" : "2.x" , "thr" : "3.3.x" } } 版本格式可以是下面任一种:

version 完全匹配

version 大于这个版本 =version大于或等于这个版本 <version <=version ~version 非常接近这个版本 ^version 与当前版本兼容 1.2.x X代表任意数字,因此1.2.1, 1.2.3等都可以 http://... Unix系统下使用的tarball的URL。

  • 任何版本都可以 ""任何版本都可以 version1 - version2 等价于 >=version1 <=version2. range1 || range2 满足任意一个即可 git... Git地址 user/repo devDependencies 可选字段。如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。

peerDependencies 可选字段。兼容性依赖。如果你的包是插件,适合这种方式。

bundledDependencies 可选字段。发布包时同时打包的其他依赖。

optionalDependencies 可选字段。如果你想在某些依赖即使没有找到,或则安装失败的情况下,npm都继续执行。那么这些依赖适合放在这里。

Engines 可选字段。既可以指定node版本:

{ "engines" : {"node" : ">=0.10.3 <0.12" } }

也可以指定npm版本:

{ "engines" : {"npm" : "~1.0.20" } }

engineStrick 可选字段,布尔值。如果你肯定你的程序只能在制定的engine上运行,设置为true。

Os 可选字段。指定模块可以在什么操作系统上运行:

"os" : [ "darwin","linux" ]

"os" : [ "!win32" ]

CPU 可选字段。指定CPU型号。

"cpu" : [ "x64","ia32" ]

"cpu" : [ "!arm","!mips" ]

preferGlobal 可选字段,布尔值。如果你的包是个命令行应用程序,需要全局安装,就可以设为true。

Private 可选字段,布尔值。如果private为true,npm会拒绝发布。这可以防止私有repositories不小心被发布出去。

publishConfig 可选字段。发布时使用的配置值放这。

默认值 · "scripts":{"start": "node server.js"}

如果你的包里有server.js文件,npm默认将执行: node server.js.

· "scripts":{"preinstall":"node-gyp rebuild"}

如果包里有binding.gyp,npm默认在preinstall命令时,使用node-gyp做编译。

© 著作权归作者所有

共有 人打赏支持
chenkangyao
粉丝 4
博文 29
码字总数 36163
作品 0
广州
高级程序员
package.json文件快速入门详解

写在前面 相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必不可少。 npm在package.json文件中管理项...

wblearn ⋅ 06/01 ⋅ 0

package.json字段全解

Name 必须字段。 小提示: 不要在name中包含js, node字样; 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头; 这个名字可能在require()方法中被调用,所以...

木子丰 ⋅ 2015/01/28 ⋅ 0

一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)

http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) : npm install http-server 如果警告:...

hhj187 ⋅ 2016/11/12 ⋅ 0

NodeJS模块全面指南

NodeJS模块 所谓的NodeJS模块其实就是指NodeJS package,即nodejs包。 在使用NodeJS进行开发的时候,往往需要用到各种各样的第三方包。当然,很多时候我们在实际开发的时候自己也会按照功能或...

COLIN前端 ⋅ 2015/11/23 ⋅ 0

Nodejs | package.json

image.png package.json是用来做什么的 package.json的主要功能有两个: 用来保存工程元数据 用来描述工程依赖项 npm,node都要用到package.json: node在调用require的时候去查找模块,会按照...

瓦斯程序媛 ⋅ 2017/12/03 ⋅ 0

node学习笔记02(模块和包管理器基础了解)

1 模块引用 在CommonJS规范中,存在require方法,这个方法接受模块标识, 以此引入一个模块的API到当前上下文中 var math = require('math'); 2 模块定义 在模块中,上下文提供require方法来引入...

funkyLover ⋅ 2014/04/09 ⋅ 0

Node.js开发指南 学习日志 3.3.3创建包

概念:包是在模块基础上更深一步的抽象,将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制。 Node.js的包是一个目录,其中包含一个JSON格式的包说明文件package.json,严格符合...

AlexTuan ⋅ 2015/12/16 ⋅ 0

从npm tips到express插件机制设计

大部分时间,我们只用到npm的install,init,publish等功能,但它设计的非常好,有很多是我们不了解的 一起看一下 全局命令 用nodejs来写cli工具是非常爽的,我干了不少这样的事儿 kp = kil...

i5ting ⋅ 2015/07/08 ⋅ 7

package.json 字段全解析

Name 必须字段。 小提示: 不要在name中包含js, node字样; 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头; 这个名字可能在require()方法中被调用,所以...

LorinLuo ⋅ 2015/10/28 ⋅ 0

开发更好用的 JavaScript 模块

不少人都曾经在 npm 上发布过自己开发的 JavaScript 模块,而在使用一些模块的过程中,我经常产生“这个模块很有用,但如果能 xxx 就更好了”的想法。所以,本文将站在模块使用者的角度总结一...

李名凯 ⋅ 2017/11/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 7分钟前 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 16分钟前 ⋅ 0

springcloud+jps+mybatis多数据库配置

多数据库配置 配置我们目录结构设置: config ---datasource ----jpa ----mybatis ----redis Datasource中是数据的相关配置 Jap中是springDatajpa的相关配置 Mybatis中是mybatis的相关配置 ...

大-智-若-愚 ⋅ 23分钟前 ⋅ 0

Spring mvc HandlerMapping 实现机制

概述 当DispatcherServlet接受到客户端的请求后,SpringMVC 通过 HandlerMapping 找到请求的Controller。 HandlerMapping 在这里起到路由的作用,负责找到请求的Controller。 Spring MVC 默认...

轨迹_ ⋅ 27分钟前 ⋅ 0

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 今天 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 今天 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 今天 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 今天 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部