package.json 非官方字段集合

package.json 非官方字段集合

package.json 官方字段请参考 https://docs.npmjs.com/files/package.json。下面介绍的是非官方字段,也就是各种工具定义的相关字段。

1. yarn 相关字段

yarn: 类似 npm 的依赖管理工具,但 yarn 缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大化资源利用率,因此安装速度更快。

flat

{"flat": true
}

如果你的包只允许给定依赖的一个版本,你想强制和命令行上 yarn install --flat 相同的行为,把这个值设为 true

详细参考 yarn - flat.

resolutions

{"resolutions": {"transitive-package-1": "0.0.29","transitive-package-2": "file:./local-forks/transitive-package-2","dependencies-package-1/transitive-package-3": "^2.1.1"}
}

允许你覆盖特定嵌套依赖项的版本。有关完整规范,请参见选择性版本解析 RFC。

详细参考 yarn - resolutions.

2. unpkg 相关字段

unpkg: 让 npm 上所有的文件都开启 cdn 服务。

unpkg

# jquery
{"unpkg": "dist/jquery.js"
}

正常情况下,访问 jquery 的发布文件通过 https://unpkg.com/jquery@3.3.1/dist/jquery.js,当你使用省略的 url https://unpkg.com/jquery 时,便会按照如下的方式获取文件:

# [latestVersion] 指最新版本号,pkg 指 package.json# 定义了 unpkg 属性时
https://unpkg.com/jquery@[latestVersion]/[pkg.unpkg]# 未定义 unpkg 属性时,将回退到 main 属性
https://unpkg.com/jquery@[latestVersion]/[pkg.main] 

详细参考 https://unpkg.com.

3. TypeScript 相关字段

TypeScript: JavaScript 的超集

typestypings

{"main": "./lib/main.js","types": "./lib/main.d.ts"
}

就像 main 字段一样,定义一个针对 TypeScript 的入口文件。

详细参考 TypeScript documentation.

4. browserslist 相关字段

browserslist: 设置项目的浏览器兼容情况。

browserslist

{"browserslist": ["> 1%","last 2 versions"]
}

支持的工具:

  • Autoprefixer
  • Babel
  • postcss-preset-env
  • eslint-plugin-compat
  • stylelint-no-unsupported-browser-features
  • postcss-normalize

详细参考 browserslist.

5. 发行打包相关字段

点击 Setting up multi-platform npm packages 查看相关介绍。

module

{"main": "./lib/main.js","module": "./lib/main.m.js"
}

就像 main 字段一样,定义一个针对 es6 模块及语法的入口文件。

构建工具在构建项目的时候,如果发现了这个字段,会首先使用这个字段指向的文件,如果未定义,则回退到 main 字段指向的文件。

支持的工具:

  • rollup
  • webpack

详细参考 rollup - pkg.module.

browser

{"main": "./lib/main.js","browser": "./lib/main.b.js"
}

指定该模块供浏览器使用的入口文件。

如果这个字段未定义,则回退到 main 字段指向的文件。

支持的工具:

  • rollup
  • webpack
  • browserify

详细参考 babel-plugin-module-resolver.

esnext

{"main": "main.js","esnext": "main-esnext.js"
}# or{"main": "main.js","esnext": {"main": "main-esnext.js","browser": "browser-specific-main-esnext.js"}
}

使用 es 模块化规范,stage 4 特性的源代码。

详细参考 Transpiling dependencies with Babel, Delivering untranspiled source code via npm.

es2015

{"main": "main.js","es2015": "main-es2015.js"
}

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

{"main": "./lib/main.js","react-native": "./lib/main.react-native.js"
}

指定该模块供 react-native 使用的入口文件。

如果这个字段未定义,则回退到 main 字段指向的文件。

源代码查看.

7. webpack 相关字段

sideEffects

{"sideEffects": true|false
}

声明该模块是否包含 sideEffects(副作用),从而可以为 tree-shaking 提供更大的优化空间。

详细参考 sideEffects example, proposal for marking functions as pure, eslint-plugin-tree-shaking.

8. microbundle 相关字段

microbundle: 基于 rollup 零配置快速打包工具。

source

{"source": "src/index.js"
}

源文件入口文件。

详细参考 Specifying builds in package.json.

umd:main

{"umd:main": "dist/main.umd.js"
}

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

{"jest": {"verbose": true}
}

配置 jest

详细参考 jest docs.

12. stylelint 相关字段

stylelint: style 代码检查与优化。

stylelint

配置 stylelint

详细参考 New configuration loader.

13. ava 相关字段

ava: js 测试库。

ava

{"ava": {"require": [ "@std/esm" ]}
}

配置 ava

详细参考 ava configuration.

14. nyc 相关字段

nyc: istanbul.js 命令行。

nyc

{"nyc": {"extension": [".js", ".mjs"],"require": ["@std/esm"]}
}

配置 nyc

详细参考 nyc docs.

15. CommonJS 保留字段

保留字段: builddefaultemailexternalfilesimportsmaintainerpathsplatformrequiresummarytestusingdownloadsuid.

不可用字段: idtype, 以 _ 和 $ 开头的字段。

16. Standard JS 相关字段

Standard JS: js 代码检查与优化。

standard

{"standard": {"parser": "babel-eslint","ignore": ["**/out/","/lib/select2/","/lib/ckeditor/","tmp.js"]}
}

配置 standard.

详细参考 https://standardjs.com/.

17. 其他

style

声明当前模块包含 style 部分,并指定入口文件。

支持的工具:

  • parcelify
  • npm-less
  • rework-npm
  • npm-css

详细参考 Package.json "style" Attribute, istf-spec.

less

与 style 一样,但是是 less 文件。

支持的工具:

  • npm-less

18. 更多

参考 package.json fields explained.

19. 后续

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

转载于:https://segmentfault.com/a/1190000016365409


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部