package.json
官方字段请参考 https://docs.npmjs.com/files/package.json。下面介绍的是非官方字段,也就是各种工具定义的相关字段。
1. yarn 相关字段
yarn: 类似 npm
的依赖管理工具,但 yarn
缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大化资源利用率,因此安装速度更快。
flat
1 | { |
如果你的包只允许给定依赖的一个版本,你想强制和命令行上 yarn install --flat
相同的行为,把这个值设为 true
。
详细参考 yarn - flat.
resolutions
1 | { |
允许你覆盖特定嵌套依赖项的版本。有关完整规范,请参见选择性版本解析 RFC。
详细参考 yarn - resolutions.
2. unpkg 相关字段
unpkg: 让 npm
上所有的文件都开启 cdn
服务。
unpkg
1 | # jquery |
正常情况下,访问 jquery
的发布文件通过 https://unpkg.com/jquery@3.3.1/dist/jquery.js
,当你使用省略的 url https://unpkg.com/jquery
时,便会按照如下的方式获取文件:
1 | # [latestVersion] 指最新版本号,pkg 指 package.json |
详细参考 https://unpkg.com.
3. TypeScript 相关字段
TypeScript: JavaScript
的超集
types
, typings
1 | { |
就像 main
字段一样,定义一个针对 TypeScript
的入口文件。
详细参考 TypeScript documentation.
4. browserslist 相关字段
browserslist: 设置项目的浏览器兼容情况。
browserslist
1 | { |
支持的工具:
- Autoprefixer
- Babel
- postcss-preset-env
- eslint-plugin-compat
- stylelint-no-unsupported-browser-features
- postcss-normalize
详细参考 browserslist.
5. 发行打包相关字段
点击 Setting up multi-platform npm packages 查看相关介绍。
module
1 | { |
就像 main
字段一样,定义一个针对 es6
模块及语法的入口文件。
构建工具在构建项目的时候,如果发现了这个字段,会首先使用这个字段指向的文件,如果未定义,则回退到 main
字段指向的文件。
支持的工具:
详细参考 rollup - pkg.module.
browser
1 | { |
指定该模块供浏览器使用的入口文件。
如果这个字段未定义,则回退到 main
字段指向的文件。
支持的工具:
详细参考 babel-plugin-module-resolver.
esnext
1 | { |
使用 es
模块化规范,stage 4
特性的源代码。
详细参考 Transpiling dependencies with Babel, Delivering untranspiled source code via npm.
es2015
1 | { |
Angular 定义的未转码的 es6
源码。
详细参考 https://docs.google.com/document/d/1CZC2rcpxffTDfRDs6p1cfbmKNLA6x5O-NtkJglDaBVs/edit#.
esm
详细参考 adjusted proposal: ES module “esm”: true package.json flag.
6. react-native 相关字段
react-native: 使用 react 组件技术写原生 APP。
react-native
1 | { |
指定该模块供 react-native
使用的入口文件。
如果这个字段未定义,则回退到 main
字段指向的文件。
7. webpack 相关字段
sideEffects
1 | { |
声明该模块是否包含 sideEffects
(副作用),从而可以为 tree-shaking
提供更大的优化空间。
详细参考 sideEffects example, proposal for marking functions as pure, eslint-plugin-tree-shaking.
8. microbundle 相关字段
microbundle: 基于 rollup 零配置快速打包工具。
source
1 | { |
源文件入口文件。
详细参考 Specifying builds in package.json.
umd:main
1 | { |
umd
模式 bundle
文件。
详细参考 Specifying builds in package.json.
8. parcel 相关字段
parcel: 零配置打包工具。
source
查看 parcel-bundler/parcel#1652.
9. babel 相关字段
babel: es6 -> es5
转码器。
babel
配置 babel
。
10. eslint 相关字段
eslint: js
代码检查与优化。
eslintConfig
配置 eslint
。
11. jest 相关字段
jest: js
测试库。
jest
1 | { |
配置 jest
。
详细参考 jest docs.
12. stylelint 相关字段
stylelint: style
代码检查与优化。
stylelint
配置 stylelint
。
详细参考 New configuration loader.
13. ava 相关字段
ava: js
测试库。
ava
1 | { |
配置 ava
。
详细参考 ava configuration.
14. nyc 相关字段
nyc: istanbul.js 命令行。
nyc
1 | { |
配置 nyc
。
详细参考 nyc docs.
15. CommonJS 保留字段
保留字段: build
, default
, email
, external
, files
, imports
, maintainer
, paths
, platform
, require
, summary
, test
, using
, downloads
, uid
.
不可用字段: id
, type
, 以 _
和 $
开头的字段。
16. Standard JS 相关字段
Standard JS: js
代码检查与优化。
standard
1 | { |
配置 standard
.
详细参考 https://standardjs.com/.
17. 其他
style
声明当前模块包含 style
部分,并指定入口文件。
支持的工具:
详细参考 Package.json “style” Attribute, istf-spec.
less
与 style
一样,但是是 less
文件。
支持的工具: