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 的超集

types, typings


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

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

详细参考 TypeScript documentation.

4. browserslist 相关字段

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

browserslist


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

支持的工具:

详细参考 browserslist.

5. 发行打包相关字段

点击 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.

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 保留字段

保留字段: build, default, email, external, files, imports, maintainer, paths, platform, require, summary, test, using, downloads, uid.

不可用字段: id, type, 以 _$ 开头的字段。

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 部分,并指定入口文件。

支持的工具:

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

less

style 一样,但是是 less 文件。

支持的工具:

18. 更多

参考 package.json fields explained.

19. 后续

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

作者:深予之 (@senntyou)

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

package.json 非官方字段集合的更多相关文章

  1. npm脚本和package.json

    1.什么是npm脚本 在创建node.js项目如一个vue项目,或一个react项目时,项目都会生成一个描述文件package.json . 比如npm允许在package.json文件里面,使用sc ...

  2. npm的package.json字段含义中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...

  3. npm package.json字段全解

    name 在package.json中最重要的就是name和version字段.他们都是必须的,如果没有就无法install.name和version一起组成的标识在假设中是唯一的.改变包应该同时改变 ...

  4. package.json常用的字段

    package.json中5个字段: name: 包名 今后下载时输入名称 (注意:要与下载的包名不一样) version:版本号 x.x.x 例如 1.2.3 1 大版本:当这个包有巨大内容变化时( ...

  5. package.json字段分析

    分析1.必须在包的顶层目录下2.二进制文件应该在bin目录下3.javascipt在lib目录下4.文档在doc目录下 package.json字段分析 name:包的名称,必须是唯一的,由小写英文字 ...

  6. package.json 字段说明

    以vue的package.json为例: { // 名称 "name": "vue", // 版本 "version": "2.6 ...

  7. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  8. Nodejs package.json文件介绍

    每个npm的安装包里面都会包含一个package.json,通常这个文件会在包的根目录下. 这个文件很类似于.net项目中的.csproj+AssemblyInfo.cs+App.config文件,主 ...

  9. (译)package.json详解

    原文链接 概述 本文囊括了所有package.json文件中你需要知道的细节.注意package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量.该文件描述的很多行为都受np ...

随机推荐

  1. IDEA的主题配置

    搞了半天的主题配色,从一些现有的主题网站上想找按照sublime中monokai进行复刻的主题,都没有找到一样的,部分的颜色还会让人看不清楚,这里分享一下自定义主题的方法,和自己配置好的一个主题吧. ...

  2. JMH--一款由OpenJDK开发的基准测试工具

    什么是JMH JMH 是 OpenJDK 团队开发的一款基准测试工具,一般用于代码的性能调优,精度甚至可以达到纳秒级别,适用于 java 以及其他基于 JVM 的语言.和 Apache JMeter ...

  3. 泊松分布算法的应用:开一家4S店

    王老板开了一家4S店,卖新车为主,车型也很单一,可是每个月销量都变化很大,他很头疼,该怎么备货,头疼的是: 1)备货少了,可以来了没货可能就不买,去别的店了 2)备货多了,占用库存不说,长久卖不出去就 ...

  4. java初探(1)之防止库存为负以及防超买

    在秒杀业务中,会出现当只剩一个库存时,但有多个人仍然秒杀成功,且都减库存成功,因此,在减库存,更新数据库的时候,需要在sql语句上进行判断,是否库存大于0. @Update("update ...

  5. 从String中移除空白字符的多种方式!?

    字符串,是Java中最常用的一个数据类型了.我们在日常开发时候会经常使用字符串做很多的操作.比如字符串的拼接.截断.替换等. 这一篇文章,我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中 ...

  6. 实战解读丨Linux下实现高并发socket最大连接数的配置方法

    摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...

  7. postgres 无法删除表

    起因 在postgress下删除表的时候报错 解决 简单的百度了一下,有些人说是用户权限的问题,需要切换到库的拥有者下删除,但是切换后还是没有解决··· 最后换了一种方式搜索,不直接搜索报错命令,直接 ...

  8. Springboot中WebMvcConfigurer接口详解

    Springboot 使用越来越多,企业的基本框架,到Springcloud分布式,可以说无论面试还是平常技术学习,一说到spring几乎就就代替了Java,可以说spring,springboot的 ...

  9. Matrix Power Series(POJ 3233)

    原题如下: Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 28044   Acce ...

  10. [LeetCode]534. 游戏玩法分析 III(Mysql)

    题目 Table: Activity +--------------+---------+ | Column Name | Type | +--------------+---------+ | pl ...