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做编译。

package.json 字段全解析的更多相关文章

  1. package.json 字段全解析 share

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

  2. [转]Node.JS package.json 字段全解析

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

  3. npm package.json字段全解

    name 在package.json中最重要的就是name和version字段.他们都是必须的,如果没有就无法install.name和version一起组成的标识在假设中是唯一的.改变包应该同时改变 ...

  4. package.json字段全解

    原文:http://blog.csdn.net/woxueliuyun/article/details/39294375 Name 必须字段. 小提示: 不要在name中包含js, node字样: 这 ...

  5. package.json字段全解(转)

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

  6. package.json字段简要解析

    name 必填 应用名称 version 必填 应用版本 description 选填 应用描述,多用于搜索,在npm search 时可以用到 keywords 选填 应用关键字,也多用于搜索 sc ...

  7. npm的package.json字段含义中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...

  8. package.json字段分析

    分析1.必须在包的顶层目录下2.二进制文件应该在bin目录下3.javascipt在lib目录下4.文档在doc目录下 package.json字段分析 name:包的名称,必须是唯一的,由小写英文字 ...

  9. package.json 字段说明

    以vue的package.json为例: { // 名称 "name": "vue", // 版本 "version": "2.6 ...

随机推荐

  1. 20145204&20145212实验二报告

    实验二固件设计 步骤: 1.开发环境的配置,参考实验一 1.将实验代码拷贝到共享文件夹中. 2.在虚拟机中编译代码.对于多线程相关的代码,编译时需要加-lpthread的库.下载调试在超级终端中运行可 ...

  2. ML 基础知识

    A computer program is said to learn from experience E with respect to some task T and some performan ...

  3. 聊聊Azure的安全性

    本来没打算写这篇博文,毕竟感觉太理论化,不像做技术的人应该写的东西,但是作为一名售前,发现很多不了解Azure的客户,上来的第一个问题竟然就是Azure如何保证客户数据的安全性,我清楚记得我第一次被问 ...

  4. 07OC之KVC、KVO

    在OC中,有着很多动态的特性,今天我们着重讲讲OC中的键值编码(KVC)和键值监听(KVO)特性. 一.键值编码(KVC) 在C#中,我们可以通过反射的方式动态去读写一个对象,有时候很方便,因为可以利 ...

  5. iOS开发——高级篇——音频、音乐播放(封装类)

    一.简介 简单来说,音频可以分为2种音效又称“短音频”,通常在程序中的播放时长为1~2秒在应用程序中起到点缀效果,提升整体用户体验 音乐比如游戏中的“背景音乐”,一般播放时间较长 播放音频可以使用框架 ...

  6. Qml 写的弹出层控件

    QML弹出窗口组件,灯箱效果.动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透 使用 Popup { id: popup width: 200; heigh ...

  7. getComputedStyle的简单用法

    var number=window.getComputedStyle("元素").style样式名

  8. Ubuntu 登录锐捷 网卡被禁用 网口灯不亮解决

    cd rjsupplicantchmod +x rjsupplicant.sh sudo ./rjsupplicant.sh -u username-p password -d 1 sudo serv ...

  9. 理解记忆三种常见字符编码:ASCII, Unicode,UTF-8

    理解什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是25 ...

  10. 数据库Sharding的基本思想和切分策略

    一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时 ...