本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/04/02/%E4%BB%80%E4%B9%88%E6%98%AFpackage-json/
摘要
本文主要讲述了:
- 什么是 package.json
- 作用
- 字段
- 创建
正文
什么是 package.json
package.json
是包的元信息描述文件。
托管在 npm 的包必须包含package.json
。
作用
- 描述了包的名称、版本、作者等基本信息
- 描述了包的依赖
字段
name
包的名字
注意:必须全部小写,可以包含-
和_
示例:
1 | { |
version
包的版本
注意:必须是x.x.x
的格式且遵循语义化版本
示例:
1 | { |
description
包的描述
用于提供搜索信息,例如:包的描述信息将会出现在npm search
的结果中
示例:
1 | { |
keywords
包的关键词数组
用于提供搜索信息,例如:包的关键词将会出现在npm search
的结果中
示例:
1 | { |
homepage
项目主页的 URL
示例:
1 | { |
bugs
反馈 bug 的 URL
示例:
1 | { |
或
1 | { |
license
用户许可协议
示例:
1 | { |
author
作者的信息
注意:作者有且只能有 1 位
示例:
1 | { |
或
1 | { |
contributors
参与贡献者列表
示例:
1 | { |
main
nodejs 环境下,包的入口文件
示例:
foo/package.json
1 | { |
foo/index.js
1 | const bar = require('bar'); |
bar/package.json
1 | { |
bar/index.js
1 | exports.firstName = 'foo'; |
运行:
1 |
|
browser
浏览器环境下,包的入口文件
示例:
foo/webpack.config.js
1 | module.exports = { |
foo/src/index.js
1 | const bar = require('bar'); |
或
1 | import bar from 'bar'; |
bar/package.json
1 | { |
运行:
1 |
|
此时webpack
会打包browser
的值所对应的文件
bin
包的可执行文件
示例:
foo/package.json
1 | { |
foo/index.js
1 | console.log('index.js'); |
foo/bin.js
1 |
|
运行:
1 |
|
在npm link
执行成功之后,shell 脚本文件(用于调用包的可执行文件)已经位于$PATH
,可以通过npx
调用 shell 脚本文件来执行包的可执行文件
1 |
|
在npm link
执行成功之后,shell 脚本文件(用于调用包的可执行文件)已经位于$PATH
,也可以直接调用 shell 脚本文件来执行包的可执行文件
1 |
|
repository
包代码仓库的 URL
示例:git@github.com:jsweibo/jsweibo.github.io.git
1 | { |
示例:https://github.com/jsweibo/jsweibo.github.io.git
1 | { |
scripts
包的脚本
示例:
1 | { |
config
包的配置信息
示例:
foo/package.json
1 | { |
foo/index.js
1 | console.log(process.env.npm_package_config_jsweibo); |
输出:
1 | 123 |
注意:包的配置信息也可以写在 npm 的配置文件里。若与 npm 的配置文件相冲突,以 npm 的配置文件为准。
示例:
1 |
|
输出:
1 | 456 |
dependencies
包的生产环境依赖
示例:npm install bar
1 | { |
示例:npm install ../bar
1 | { |
示例:npm install https://github.com/jsweibo/bar.git
1 | { |
devDependencies
包的开发环境依赖
开发环境依赖仅在开发环境使用,不用于生产环境
示例:npm install --save-dev bar
1 | { |
示例:npm install --save-dev ../bar
1 | { |
示例:npm install --save-dev https://github.com/jsweibo/bar.git
1 | { |
peerDependencies
包的同伴依赖
常用于插件包中,用于提醒
注意:自npm@3
起,npm install
不再默认安装依赖包的同伴依赖
示例:jquery-cookie/package.json
1 | { |
bundledDependencies
包的打包依赖
bundledDependencies
为空时,npm pack
不会处理./node_modules/
bundledDependencies
不为空时,npm pack
会把bundledDependencies
列表中的依赖一并打包
注意:bundledDependencies
也可以写作bundleDependencies
示例:
1 | { |
optionalDependencies
包的可选依赖
示例:npm install --save-optional bar
1 | { |
示例:npm install --save-optional ../bar
1 | { |
示例:npm install --save-optional https://github.com/jsweibo/bar.git
1 | { |
engines
表示能运行此包的 node 版本范围或能管理此包的 npm 版本范围
注意:除非用户将engine-strict
设置为true
,否则仅会输出警告信息
示例:
1 | { |
private
私有包,禁止发布
npm
将拒绝发布private
为true
的包
示例:
1 | { |
创建
问答式创建
- 创建并进入 1 个新的目录,以
foo
为例。 - 运行
npm init
命令。 - 根据提示输入信息。
1 |
|
基于默认值创建
- 创建并进入 1 个新的目录,以
foo
为例。 - 运行
npm init --yes
命令。
1 |
|
设定默认值
示例:设定默认的 Email
1 |
|
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/04/02/%E4%BB%80%E4%B9%88%E6%98%AFpackage-json/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/04/02/%E4%BB%80%E4%B9%88%E6%98%AFpackage-json/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。