首页 > 其他分享 >package.json 中的 browser main module

package.json 中的 browser main module

时间:2023-05-14 21:23:48浏览次数:35  
标签:npm 文件 module json 使用 main browser

npm 包其实又分为:只允许在客户端使用的,只允许造服务端使用的,浏览器/服务端都可以使用。
如果我们需要开发一个 npm 包同时兼容支持 web端 和 server 端,需要在不同环境下加载npm包不同的入口文件,显然一个 main 字段已经不能够满足我们的需求,这就衍生出来了 module 与 browser 字段。

文件优先级

在说 package.json 之前,先说下文件优先级

由于我们使用的模块规范有 ESM 和 commonJS 两种,为了能在 node 环境下原生执行 ESM 规范的脚本文件,.mjs 文件就应运而生。

当存在 index.mjs 和 index.js 这种同名不同后缀的文件时,import './index' 或者 require('./index') 是会优先加载 index.mjs 文件的。

也就是说,优先级 mjs > js

browsermodule 和 main 字段

字段定义

  • main : 定义了 npm 包的入口文件,browser 环境和 node 环境均可使用

  • module : 定义 npm 包的 ESM 规范的入口文件,browser 环境和 node 环境均可使用

  • ·browser : 定义 npm 包在 browser 环境下的入口文件

总结

  • 如果 npm 包导出的是 ESM 规范的包,使用 module

  • 如果 npm 包只在 web 端使用,并且严禁在 server 端使用,使用 browser。

  • 如果 npm 包只在 server 端使用,使用 main

  • 如果 npm 包在 web 端和 server 端都允许使用,使用 browser 和 main

实际情况 https://github.com/SunshowerC/blog/issues/8

标签:npm,文件,module,json,使用,main,browser
From: https://www.cnblogs.com/taue997/p/17400234.html

相关文章

  • mysql8之json/数组的增删改查
    前言,类型必须是json,虽然text也可以,但是很多操作没法使用,比如查询,当然了,这种类型还可以存储数组类似varchar,设置JSON主要将字段的type是json,不能设置长度,可以是NULL但不能有默认值。创建jsonjson_array创建json数组json_object创建json对象查询jsonjson_contain......
  • MySQL8JSON数组函数之json_array_append、json_array_insert
    json_array_append、json_array_insert顾名思义就是向数组中追加和插入值,因为没有找到合适的例子,所以就使用官方的例子进行说明1、json_array_append向指定的位置后追加值,查询和修改的函数如下所示:updatetest_jsonsettest_json_array=json_array_append(test_json_array,......
  • mysql8 json 索引总结
    表结构如下所示:CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo......
  • MySQL8之JSON_OVERLAPS、JSON_CONTAINS
    表结构如下所示:CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo......
  • MySQL8版本之json_keys、json_object、json_overlaps、json_pretty
    CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo`jsonDEFAU......
  • CF1580C Train Maintenance题解
    我们以\(\sqrtm\)为分界点来进行平衡。设当前在进行第\(k\)次操作,询问\(i\)。对于\(x_i+y_i\leq\sqrtm\),可以在\(last_{x_i+y_i,day\bmod(x_i+y_i)}\)上\(+1\),其中\(day\)表示维修的时间,\(k+x_i\leqday\leqk+x_i+y_i-1\),输出时暴力统计即可......
  • 获取compile_commands.json的方式
    CMake工程这个最简单,在CMakeLists.txt中加set(CMAKE_EXPORT_COMPILE_COMMANDSon),或者在cmake的命令中加-DCMAKE_EXPORT_COMPILE_COMMANDS.即可产生CMakefileMakefile借助compiledb程序可以生成compile_commands.json文件。compiledb-nmake-f/path/to/Makefile#......
  • 常用模块,time,random,json,os
    模块底层都是c语言写的模块的分类内置模块,不需要自己安装,直接拿过来用扩展模块,第三方模块,需要自己安装本地编辑器安装小白教程(forchange.cn)random随机数.random()不入参,求(0,1)之间的随机数,开区间.randint(a,b)求随机整数,闭区间[a,b].randrange(start,stop,step......
  • KVM环境:Active console session exists for this domain
    做测试过程中被迫换电脑,但没有关掉原电脑的连接,所以用其他电脑连接测试环境时,发现之前的kvm测试环境因没有断开,无法连接:error:operationfailed:Activeconsolesessionexistsforthisdomain[root@bogon~]#virshconsoledb11gConnectedtodomaindb11gEscapecharact......
  • com-alibaba-fastjson转换json时默认将属性第一个字母转小写
    问题描述将实体类对象转为json字符串的时候,会将属性名首字母改为小写例如此出User队形有两个属性,USER_NAME和USER_AGE,首字母均为大写将实体类对象转为JSON后首字母全都转换为了小写解决方法这是因为阿里巴巴的fastjson框架默认使用了JavaBean规范中的命名约定,将属性名首字......