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
的超集
types
, typings
{
"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 - 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
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
package.json 非官方字段集合的更多相关文章
- npm脚本和package.json
1.什么是npm脚本 在创建node.js项目如一个vue项目,或一个react项目时,项目都会生成一个描述文件package.json . 比如npm允许在package.json文件里面,使用sc ...
- npm的package.json字段含义中文文档
简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...
- npm package.json字段全解
name 在package.json中最重要的就是name和version字段.他们都是必须的,如果没有就无法install.name和version一起组成的标识在假设中是唯一的.改变包应该同时改变 ...
- package.json常用的字段
package.json中5个字段: name: 包名 今后下载时输入名称 (注意:要与下载的包名不一样) version:版本号 x.x.x 例如 1.2.3 1 大版本:当这个包有巨大内容变化时( ...
- package.json字段分析
分析1.必须在包的顶层目录下2.二进制文件应该在bin目录下3.javascipt在lib目录下4.文档在doc目录下 package.json字段分析 name:包的名称,必须是唯一的,由小写英文字 ...
- package.json 字段说明
以vue的package.json为例: { // 名称 "name": "vue", // 版本 "version": "2.6 ...
- npm package.json属性详解
概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...
- Nodejs package.json文件介绍
每个npm的安装包里面都会包含一个package.json,通常这个文件会在包的根目录下. 这个文件很类似于.net项目中的.csproj+AssemblyInfo.cs+App.config文件,主 ...
- (译)package.json详解
原文链接 概述 本文囊括了所有package.json文件中你需要知道的细节.注意package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量.该文件描述的很多行为都受np ...
随机推荐
- day37:MySQL基本操作
目录 part1:登录mysql的完整语法 part2:查询用户/设置密码/去除密码 part3:给ip/网段/所有ip设置账号密码 part4:查看权限 part5:添加权限/删除权限/删除用户 p ...
- 洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP
洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP 题目描述 著名的电子产品品牌\(SHOI\) 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米 ...
- 【转】C# 利用反射根据类名创建类的实例对象
原文地址:https://www.cnblogs.com/feiyuhuo/p/5793606.html “反射”其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System ...
- 小案例-WebSocket实现简易聊天室
前言 在详解 HTTP系列之一讲到HTTP/2.0 突破了传统的"请求-问答模式"这一局限,实现了服务器主动向客户端传送数据.而本章将通过一种在单个TCP连接上进行全双工通信的协议 ...
- 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目
工欲善其事 , 必先利其器 . IntelliJ IDEA 2019.3.3 x64的安装与破解 下面详细说明下如何使用idea创建我们的第一个springboot项目: 首先打开idea主界面选择 ...
- 23种设计模式 - 接口隔离(Facade - Proxy - Mediator - Adapter)
其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 接口隔离 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接( ...
- Android开发,java开发程序员常见基础面试题,更换两个变量的值,java逻辑代码
public class abswitch{ public static void main (String args []){ //author:qq986945193 int a=1; int b ...
- Sql 注入----学习笔记
先了解下CRLF,CRLF常用在分隔符之间,CR是carriage retum(ASCII 13,\r) LF是Line Feed (ASCII 10,\n), \r\n这两个字符类似于回车是用于换行 ...
- ract-native常用命令
1.新建项目:react-native init AwesomeProject 2.运动项目 cd AwesomeProject react-native run-ios 3.添加第三方插件: yar ...
- Mybatis入门篇之结果映射,你射准了吗?
目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...