package.json各字段的做用

package.json文件可使你的npm包对于其余人来讲更容易管理和下载。发布npm包也是必需要有该文件的。html

name

npm包的名字,必须是一个小写的单词,能够包含连字符-和下划线_发布时必填node

version

npm包的版本号,必须是x.x.x的形式,而且遵循语义化版本规则。发布时必填react

阶段 规则 例子
首次发版 从1.0.0开始 1.0.0
补丁发布 递增第三位数 1.0.8
次要版本 递增第二位数,将第三位置位0 1.2.0
主要版本 递增第一位数,将后俩位数置位0 3.0.0

:版本号不存在十进制说法,当代码一直处于同一阶段更新时,版本号能够一直增长、1.0.351.12.5都是能够的。webpack

description

npm包的简短描述,它会显示在npm官方搜索的列表中。git

"description": "A Component Library for React"
复制代码

keywords

npm包的关键词,是一个字符串数组,能够帮助其余人在npm搜索列表中发现你的包。github

"keywords": [
  "react",
  "component",
  "ui"
],
复制代码

homepage

npm包项目主页地址,能够是托管平台的地址。web

"homepage": "https://github.com/lhz960904/ouio#readme"
复制代码

bugs

npm包问题反馈的地址,能够是github的issue或者是邮箱地址。对于那些使用遇到问题的人颇有帮助。npm

"bugs": {
  "url": "https://github.com/lhz960904/ouio/issues",
  "email": "lihaozecq@gmail.com"
}
复制代码

license

为npm包指定许可证,以便其余人知道他们被容许使用方式以及该npm包被施加的任何限制。json

author

npm包的做者,电子邮件和网站都是能够的,如下俩种方式均可以。数组

"author": "lihaozecq <lihaozecq@gmail.com> (https://github.com/lhz960904)" 
复制代码
"author": {
  "name" : "lihaozecq",
  "email" : "lihaozecq@gmail.com",
  "url" : "https://github.com/lhz960904"
}
复制代码

files

npm包做为依赖安装时要包括的文件,格式是文件正则的数组,["*"]表明全部文件。也可使用npmignore 来忽略个别文件。 files字段优先级最大,不会被npmignore.gitignore覆盖。

如下文件老是被包含的,与配置无关

  • package.json
  • README.md
  • CHANGES / CHANGELOG / HISTORY
  • LICENCE / LICENSE

如下文件老是被忽略的,与配置无关

  • .git
  • .DS_Store
  • node_modules
  • .npmrc
  • npm-debug.log
  • package-lock.json
  • 等等

main

指定npm包的入口文件,例 "main": "src/index.js"require(name)的时候实质是引入了改文件。

bin

开发可执行文件时,bin字段能够帮助你设置连接,不须要手动设置PATH。

"bin" : { 
  "oui" : "./cli.js" 
}
复制代码

当像上面这样指定时,下载npm包,会自动连接cli.jsuse/local/bin/oui,能够直接在命令行执行oui实质上执行的是npm包的cli,js文件,须要在可执行文件头部加上#!/usr/bin/env node,不然会在没有node的时候执行。当只有一个可执行文件且名字和包名同样,能够直接写成字符串形式。

"bin": "./cli.js"
复制代码

repository

npm包托管的地方,对于想贡献代码的人是有帮助的。

"repository": {
  "type": "git",
  "url": "https://github.com/lhz960904/ouio"
}
复制代码

scripts

可执行的命令。具体文档

"scripts": {
  "dev": "cross-env NODE_ENV=development node server.js",
  "build": "cross-env NODE_ENV=production node server.js"
}
复制代码

dependencies

npm包所依赖的其余npm包,当使用npm install 下载该包时,dependencies中指定的包都会一并被下载。指定版本范围的规则以下:

  • version 严格匹配
  • > version 必须大于该版本
  • <= version 必须小于等于该版本
  • ^version 兼容版本
  • 1.2.x 1.2.0, 1.2.1等,不能是1.3x
  • 等等
"dependencies": {
  "react": "^16.10.2",
  "react-dom": "^16.10.2"
}
复制代码

devDependencies

npm包所依赖的构建和测试相关的npm包,放置到devDependencies,当使用npm install 下载该包时,devDependencies中指定的包不会一并被下载。

"devDependencies": {
  "eslint": "^6.1.0",
  "jest": "^24.8.0",
  "webpack": "^4.0.0"
}
复制代码

peerDependencies

指定npm包与主npm包的兼容性,当开发插件时是须要的,例如开发React组件时,其组件是依赖于reactreact-domnpm包的,能够在peerDependencies指定须要的版本。

"peerDependencies": {
  "react": ">=16.8.0",
  "react-dom": ">=16.8.0"
}
复制代码

:若是peerDependencies指定的npm包没有下载,npm版本1和2会直接下载。 npm3不会下载,会给出警告。

engines

指定npm包可使用的Node版本

"engines" : {
  "node" : ">=10.0.0"
}
复制代码

参考

相关文章
相关标签/搜索