package.json
官方字段請參考 https://docs.npmjs.com/files/package.json。下面介紹的是非官方字段,也就是各類工具定義的相關字段。css
yarn: 相似 npm
的依賴管理工具,但 yarn
緩存了每一個下載過的包,因此再次使用時無需重複下載,同時利用並行下載以最大化資源利用率,所以安裝速度更快。html
flat
{ "flat": true }
若是你的包只容許給定依賴的一個版本,你想強制和命令行上 yarn install --flat
相同的行爲,把這個值設爲 true
。node
詳細參考 yarn - flat.react
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。jquery
詳細參考 yarn - resolutions.webpack
unpkg: 讓 npm
上全部的文件都開啓 cdn
服務。git
unpkg
# jquery { "unpkg": "dist/jquery.js" }
正常狀況下,訪問 jquery
的發佈文件經過 https://unpkg.com/jquery@3.3.1/dist/jquery.js
,當你使用省略的 url https://unpkg.com/jquery
時,便會按照以下的方式獲取文件:es6
# [latestVersion] 指最新版本號,pkg 指 package.json # 定義了 unpkg 屬性時 https://unpkg.com/jquery@[latestVersion]/[pkg.unpkg] # 未定義 unpkg 屬性時,將回退到 main 屬性 https://unpkg.com/jquery@[latestVersion]/[pkg.main]
詳細參考 https://unpkg.com.github
TypeScript: JavaScript
的超集web
types
, typings
{ "main": "./lib/main.js", "types": "./lib/main.d.ts" }
就像 main
字段同樣,定義一個針對 TypeScript
的入口文件。
詳細參考 TypeScript documentation.
browserslist: 設置項目的瀏覽器兼容狀況。
browserslist
{ "browserslist": [ "> 1%", "last 2 versions" ] }
支持的工具:
詳細參考 browserslist.
點擊 Setting up multi-platform npm packages 查看相關介紹。
module
{ "main": "./lib/main.js", "module": "./lib/main.m.js" }
就像 main
字段同樣,定義一個針對 es6
模塊及語法的入口文件。
構建工具在構建項目的時候,若是發現了這個字段,會首先使用這個字段指向的文件,若是未定義,則回退到 main
字段指向的文件。
支持的工具:
詳細參考 rollup - pkg.module.
browser
{ "main": "./lib/main.js", "browser": "./lib/main.b.js" }
指定該模塊供瀏覽器使用的入口文件。
若是這個字段未定義,則回退到 main
字段指向的文件。
支持的工具:
詳細參考 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.
react-native: 使用 react 組件技術寫原生APP。
react-native
{ "main": "./lib/main.js", "react-native": "./lib/main.react-native.js" }
指定該模塊供 react-native
使用的入口文件。
若是這個字段未定義,則回退到 main
字段指向的文件。
sideEffects
{ "sideEffects": true|false }
聲明該模塊是否包含 sideEffects
(反作用),從而能夠爲 tree-shaking
提供更大的優化空間。
詳細參考 sideEffects example, proposal for marking functions as pure, eslint-plugin-tree-shaking.
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.
parcel: 零配置打包工具。
source
查看 parcel-bundler/parcel#1652.
babel: es6 -> es5
轉碼器。
babel
配置 babel
。
eslint: js
代碼檢查與優化。
eslintConfig
配置 eslint
。
jest: js
測試庫。
jest
{ "jest": { "verbose": true } }
配置 jest
。
詳細參考 jest docs.
stylelint: style
代碼檢查與優化。
stylelint
配置 stylelint
。
詳細參考 New configuration loader.
ava: js
測試庫。
ava
{ "ava": { "require": [ "@std/esm" ] } }
配置 ava
。
詳細參考 ava configuration.
nyc: istanbul.js 命令行。
nyc
{ "nyc": { "extension": [".js", ".mjs"], "require": ["@std/esm"] } }
配置 nyc
。
詳細參考 nyc docs.
保留字段: build
, default
, email
, external
, files
, imports
, maintainer
, paths
, platform
, require
, summary
, test
, using
, downloads
, uid
.
不可用字段: id
, type
, 以 _
和 $
開頭的字段。
Standard JS: js
代碼檢查與優化。
standard
{ "standard": { "parser": "babel-eslint", "ignore": [ "**/out/", "/lib/select2/", "/lib/ckeditor/", "tmp.js" ] } }
配置 standard
.
詳細參考 https://standardjs.com/.
style
聲明當前模塊包含 style
部分,並指定入口文件。
支持的工具:
詳細參考 Package.json "style" Attribute, istf-spec.
less
與 style
同樣,可是是 less
文件。
支持的工具:
參考 package.json fields explained.
更多博客,查看 https://github.com/senntyou/blogs
版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)