npm package.json 参数加深理解

package.json 重要的几个参数

repository

具体说明你的代码存放地。对想要贡献代码的人来说很有用。如果git repo 在 github上,
那么npm docs命令会找到你
像这样做:

1
2
3
4
5
6
7
8
9
10
  
"repository" :
{ "type" : "git"
, "url" : "https://github.com/npm/npm.git"
}
"repository" :
{ "type" : "svn"
, "url" : "https://v8.googlecode.com/svn/trunk/"
}

URL必须是公开可用的(可能只是只读)
URL可以直接被vcs程序处理而不需要任何修改
它不应该是你挂在网上的html工程页面的网址。它是给电脑的

GitHub, GitHub gist, Bitbucket, or GitLab repositories 你可以在 npm install中
用以下缩写

1
2
3
4
5
6
7
8
9
 
"repository": "npm/npm"

"repository": "gist:11081aaa281"

"repository": "bitbucket:example/repo"

"repository": "gitlab:another/repo"

dependencies

dependencies 是同过一个简单的object来映射包名跟版本范围。版本范围是一个有着一个或者多个space分隔的描述符的string。
dependencies 用tarball 或者 git url
请不要把测试线束或transpilers在依赖对象中。 请参见下面的devDependencies。

参考semver获取更多版本范围的具体说明
补充版本号格式 (版本格式:主版本号.次版本号.修订号)
主版本号:当你做了不兼容的 API 修改,
次版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正(bug fixes)。

  • version 对应具体版本
  • ~version 不改变主版本号跟次版本号
  • ^version 不改变主版本号(当主版本号为0开始时 ~version 跟 ^version 时一样的【0.0.0 <1.0.0】)
  • git… 参考以下的 ‘Git URLs’
  • user/repo 参考以下的 ‘GitHub URLs’
  • tag 特定版本打包发布标记为标签 参考npm-tag
  • path/path/path 参考以下的本地路径
  • http://… 参考以下的 ‘URLs 压缩包’
  • range1 || range2 range1 或 range2 都可以通过
    以下都是合理的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{ "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" //你可以指定一个url压缩包
, "til" : "~1.2"
, "elf" : "~1.2.3"
, "two" : "2.x"
, "thr" : "3.3.x"
, "lat" : "latest"
, "dyl" : "file:../dyl"
}
}
  1. Git URLs
1
2
3
4
5
6
git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish

commit-ish 可以是任何作为参数提供给git checkout 的tag sha 或者分支branch。默认是master

  1. GitHub URLs
    在版本1.1.65,你可以参考github urls 像 “foo”: “user/foo-project”。只是用了
    git URLs,commit-ish可以加在末尾,例如
1
2
3
4
5
6
7
8
9
{
"name": "foo",
"version": "0.0.0",
"dependencies": {
"express": "visionmedia/express",
"mocha": "visionmedia/mocha#4727d357ea"
}
}

devDependencies

如果有人打算下载使用你的模块在他们的项目里,那么他们kennel不想或者没必要下载安置你使用的
额外测试或者文档框架。
像这种情况,最好吧你额外的选项放在你的devDependencies obeject里面
这些会被下载当你在根目录下执行 npm link 或者 npm install,像其他npm 配置参数一样被管理
更多请参考参考npm-config

(简单来说就是开发在项目跟目录下执行npm install 会下载依赖,但是用户使用通过npm install下载你的包
不会下载依赖)

peerDependencies

(… 待续)