package.json配置
package.json配置
- 描述配置
- 文件配置
- 脚本配置
- 依赖配置
- 发布配置
- 系统配置
- 第三方配置
描述配置
-
name
: 项目名称,第三方包可以通过npm install 包名安装-
"name":"react"
-
-
version
: 项目版本,项目版本号-
"version" : "18.2.0"
-
-
repository
: 仓库地址及版本控制信息-
"repository": {"type": "git","url": "https://github.com/facebook/react.git","directory": "packages/react" }
-
-
decription
: 项目描述,会展示在 npm 官网,让别人能快速了解该项目-
"description": "React is a JavaScript library for building user interfaces."
-
-
keyword
: 技术关键词,好的关键词可以帮助别人在 npm 官网上更好地检索到此项目,增加曝光率-
"keywords": ["ant","component","components","design","framework","frontend","react","react-component","ui" ],
-
-
homepage
: 项目主页的链接,通常是项目 github 链接,项目官网或文档首页-
"homepage": "https://reactjs.org/"
-
-
bugs
: 项目 bug 反馈地址,通常是 github issue 页面的链接-
"bugs": "https://github.com/vuejs/core/issues"
-
-
license
: 项目的开源许可证-
"license": "MIT"
-
-
author
: 项目作者-
"author": "Li jiaxun"
-
-
contributors
: 该项目包的贡献者-
"contributors": ["CUGGZ0 <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)","CUGGZ1 <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)" ]"contributors": [{"name" : "CUGGZ0","email" : "xxxxx@xx.com","url" : "https://juejin.cn/user/3544481220801815"},{"name" : "CUGGZ1","email" : "xxxxx@xx.com","url" : "https://juejin.cn/user/3544481220801815"} ]
-
文件配置
-
files
: 项目在进行 npm 发布时,可以通过 files 指定需要跟随一起发布的内容来控制 npm 包的大小,避免安装时间太长,发布时默认会包括 package.json,license,README 和main 字段里指定的文件。忽略 node_modules,lockfile 等文件,在此基础上,我们可以指定更多需要一起发布的内容。可以是单独的文件,整个文件夹,或者使用通配符匹配到的文件-
"files": ["filename.js","directory/","glob/*.{js,json}" ]
-
-
type
: 在 node 支持 ES 模块后,要求 ES 模块采用 .mjs 后缀文件名。只要遇到 .mjs 文件,就认为它是 ES 模块。如果不想修改文件后缀,就可以在 package.json文件中,指定 type 字段为 module-
"type": "module"
-
-
main
: 项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件,因为 main 字段里指定的是项目的入口文件,在 browser 和 Node 环境中都可以使用,如果不设置 main 字段,那么入口文件就是根目录下的 index.js-
"main": "./index.js"
-
-
browser
: main 字段里指定的入口文件在 browser 和 Node 环境中都可以使用。如果只想在 web 端使用,不允许在 server 端使用,可以通过 browser 字段指定入口-
"browser": "./browser/index.js"
-
-
module
: 项目也可以指定 ES 模块的入口文件,这就是 module 字段的作用-
"module": "./index.mjs"
-
当一个项目同时定义了 main,browser 和 module,像 webpack,rollup 等构建工具会感知这些字段,并会根据环境以及不同的模块规范来进行不同的入口文件查找
-
-
exports
: node 在 14.13 支持在 package.json 里定义 exports 字段,拥有了条件导出的功能,exports 字段可以配置不同环境对应的模块入口文件,并且当它存在时,它的优先级最高-
"exports": {"require": "./index.js","import": "./index.mjs"
-
这样的配置在使用 import ‘xxx’ 和 require(‘xxx’) 时会从不同的入口引入文件
-
上面的写法等同于
-
"exports": {".": {"require": "./index.js","import": "./index.mjs"} }
-
exports 除了支持配置包的默认导出,还支持配置包的子路径
-
"exports": {"./style": "./dist/css/index.css" },
-
//原来的引入 import `packageA/dist/css/index.css`; // 用户引入时 import `packageA/style`;
-
除了对导出的文件路径进行封装,exports 还限制了使用者不可以访问未在 “exports” 中定义的任何其他路径。比如发布的 dist 文件里有一些内部模块 dist/internal/module ,被用户单独引入使用的话可能会导致主模块不可用。为了限制外部的使用,我们可以不在 exports 定义这些模块的路径,这样外部引入 packageA/dist/internal/module 模块的话就会报错。
-
-
workspaces
: 项目的工作区配置,用于在本地的根目录下管理多个子项目。可以自动地在 npm install 时将 workspaces 下面的包,软链到根目录的 node_modules 中,不用手动执行 npm link 操作-
"workspaces": ["workspace-a" ]
-
表示在 workspace-a 目录下还有一个项目,它也有自己的 package.json。
-
通常子项目都会平铺管理在 packages 目录下,所以根目录下 workspaces 通常配置为
-
"workspaces": ["packages/*" ]
-
脚本配置
-
script
: 指定项目的一些内置脚本命令,这些命令可以通过 npm run 来执行。通常包含项目开发,构建 等 CI 命令-
"scripts": {"build": "webpack" }
-
除了指定基础命令,还可以配合 pre 和 post 完成命令的前置和后续操作
-
"scripts": {"build": "webpack","prebuild": "xxx", // build 执行之前的钩子"postbuild": "xxx" // build 执行之后的钩子 }
-
执行 npm run build 命令时,会按照 prebuild -> build -> postbuild 的顺序依次执行上方的命令(pnpm和yarn2已经废弃这种操作)
-
-
config
: 设置 scripts 里的脚本在运行时的参数-
# 设置端口号 "config": {"port": "3001" } # 在执行脚本时,我们可以通过 npm_package_config_port 这个变量访问到 3001
-
依赖配置
-
dependencies
: 运行依赖,也就是项目生产环境下需要用到的依赖-
"dependencies": {"react": "^18.2.0","react-dom": "^18.2.0" }
-
-
devDependencies
: 开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发-
"devDependencies": {"webpack": "^5.69.0" }
-
-
perDependencies
: 同伴依赖,一种特殊的依赖,不会被自动安装,通常用于表示与另一个包的依赖与兼容性关系来警示使用者。-
比如我们安装 A,A 的正常使用依赖 B@2.x 版本,那么 B@2.x 就应该被列在 A 的 peerDependencies 下,表示“如果你使用我,那么你也需要安装 B,并且至少是 2.x 版本
-
"peerDependencies": {"react": ">=16.9.0","react-dom": ">=16.9.0" }
-
-
optionalDependencies
: 可选依赖,顾名思义,表示依赖是可选的,它不会阻塞主功能的使用,安装或者引入失败也无妨。这类依赖如果安装失败,那么 npm 的整个安装过程也是成功的-
"optionalDependencies": {"colors": "^1.4.0" }
-
-
peerDependenciesMeta
: 同伴依赖也可以使用 peerDependenciesMeta 将其指定为可选的-
"peerDependencies": {"colors": "^1.4.0" }, "peerDependenciesMeta": {"colors": {"optional": true} }
-
-
bundleDependencies
: 打包依赖。它的值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包-
"bundleDependencies": ["react","react-dom" ] # 在执行 npm pack 打包生成 tgz 压缩包中,将出现 node_modules 并包含 react 和 react-dom # 需要注意的是,这个字段数组中的值必须是在 dependencies,devDependencies 两个里面声明过的依赖才行
-
-
overrides
: overrides 可以重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换-
# 某个依赖 A,由于一些原因它依赖的包 foo@1.0.0 需要替换,我们可以使用 overrides 修改 foo 的版本号: "overrides": {"foo": "1.1.0-patch" } # 当然这样会更改整个依赖树里的 foo,我们可以只对 A 下的 foo 进行版本号重写 "overrides": {"A": {"foo": "1.1.0-patch",} }
-
发布配置
-
private
: 如果是私有项目,不希望发布到公共 npm 仓库上,可以将 private 设为 true-
"private": true
-
-
publishConfig
: npm 包发布时使用的配置-
# 比如在安装依赖时指定了 registry 为 taobao 镜像源,但发布时希望在公网发布,就可以指定 publishConfig.registry "publishConfig": {"registry": "https://registry.npmjs.org/" }
-
系统配置
-
engines
: 一些项目由于兼容性问题会对 node 或者包管理器有特定的版本号要求-
"engines": {"node": ">=14 <16","pnpm": ">7" }
-
-
os
: 在 linux 上能正常运行的项目可能在 windows 上会出现异常,使用 os 字段可以指定项目对操作系统的兼容性要求-
"os": ["darwin", "linux"]
-
-
cpu
: 指定项目只能在特定的 CPU 体系上运行-
"cpu": ["x64", "ia32"]
-
第三方配置
-
types/typings
: 指定 TypeScript 的类型定义的入口文件-
"types": "./index.d.ts",
-
-
unpkg
: 让 npm 上所有的文件都开启 CDN 服务-
"unpkg": "dist/vue.global.js" # 当我们想通过 CDN 的方式使用链接引入 vue 时。访问 unpkg.com/vue 会重定向到 unpkg.com/vue@3.2.37/… 3.2.27 是 Vue 的最新版本。
-
-
jsdelivr
: 与 unpkg 类似-
"jsdelivr": "dist/vue.global.js", # 访问 cdn.jsdelivr.net/npm/vue 实际上获取到的是 jsdelivr 字段里配置的文件地址
-
-
browserslist
: 设置项目的浏览器兼容情况,babel 和 autoprefixer 等工具会使用该配置对代码进行转换。当然你也可以使用 .browserslistrc 单文件配置。-
"browserslist": ["> 1%","last 2 versions" ]
-
-
sideEffects
: 显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化-
比如在项目中整体引入 Ant Design 组件库的 css 文件。
-
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
-
如果 Ant Design 的 package.json 里不设置 sideEffects,那么 webapck 构建打包时会认为这段代码只是引入了但并没有使用,可以 tree-shaking 剔除掉,最终导致产物缺少样式。
所以 Ant Design 在 package.json 里设置了如下的 sideEffects,来告知 webpack,这些文件具有副作用,引入后不能被删除 -
"sideEffects": ["dist/*","es/**/style/*","lib/**/style/*","*.less" ]
-
-
lint-staged
: 用于对 git 的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作-
"lint-staged": {"src/**/*.{js,jsx,ts,tsx}": ["eslint --fix","git add -A"] }
-
lint-staged 通常配合 husky 这样的 git-hooks 工具一起使用。git-hooks 用来定义一个钩子,这些钩子方法会在 git 工作流程中比如 pre-commit,commit-msg 时触发,可以把 lint-staged 放到这些钩子方法中
-
-
eslintConfig
: eslint的配置可以写在单独的配置文件.eslintrc.json 中,也可以写在package.json文件的eslintConfig配置项中-
"eslintConfig": {"root": true,"env": {"node": true},"extends": ["plugin:vue/essential","eslint:recommended"],"rules": {},"parserOptions": {"parser": "babel-eslint"}, }
-
-
babel
: babel用来指定Babel的编译配置-
"babel": {"presets": ["@babel/preset-env"],"plugins": [...] }
-
-
gitHooks
: gitHooks用来定义一个钩子,在提交(commit)之前执行ESlint检查。在执行lint命令后,会自动修复暂存区的文件。修复之后的文件并不会存储在暂存区,所以需要用git add命令将修复后的文件重新加入暂存区。在执行pre-commit命令之后,如果没有错误,就会执行git commit命令-
"gitHooks": {"pre-commit": "lint-staged" }
-
相关文章:
package.json配置
package.json配置 描述配置文件配置脚本配置依赖配置发布配置系统配置第三方配置 描述配置 name : 项目名称,第三方包可以通过npm install 包名安装 "name":"react"version : 项目版本,项目版本号 "version" : "18.2…...

视频怎么转gif动图?5个简单转换方法快来学(详细教程)
相信大家在社交平台上会经常看到一些有趣的gif动图表情包,有些小伙伴就会问:这些GIF动图是如何制作的呢?一般GIF动图表情包可以用视频来制作,今天小编就来给大家分享几个视频转成GIF动图的方法,相信通过以下的几个方法…...

10月更新:优维EasyOps®需求解决更彻底,功能体验再升级
升 级 不 止 步 欢迎来到 需求至上,功能完善 的 \ EasyOps 7.5版本 / 👇 >> 联动架构视图:深度融合监控与资源拓扑 传统上,依赖监控态势感知系统固有的分层拓扑结构虽有其优势,但在处理复杂系统尤其是核心数…...
黑马javaWeb笔记重点备份1:三层架构、IOC、DI
来自:【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)】 https://www.bilibili.com/video/BV1m84y1w7Tb/?p75&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c398…...

大坝渗流监测设备——渗压计
渗压计是一种用于监测大坝等水工建筑物渗流压力的重要设备,其准确性和可靠性对于保障大坝安全运行至关重要。南京峟思将为大家详细介绍渗压计的工作原理、安装方法及其在大坝渗流监测中的应用。 渗压计主要利用振弦频率的变化来测量渗透水压力。设备由透水部件、感应…...

Pikachu-Sql Inject-宽字节注入
基本概念 宽字节是相对于ascII这样单字节而言的;像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节,实际上只有两字节 GBK 是一种多字符的编码,通常来说,一个 gbk 编码汉字,占用2个字节。一个…...

如何制作低代码开发的视频教程?
如何制作低代码开发的视频教程? 随着数字化转型的加速,越来越多的企业和组织开始采用低代码开发平台来加速应用程序的构建。对于许多开发者和业务人员来说,学习如何使用这些平台可以显著提高工作效率。因此,创建一份清晰、实用且…...
Flink学习地址
--基础概念 概览 | Apache Flink --应用系列 如何学习Flink:糙快猛的大数据之路(图文并茂)_flink 学习-CSDN博客 --Python系列 pyflink实时接收kafka数据至hive_pyflink下kafka数据经过处理后插入hive-CSDN博客 Pyflink教程(一)&#…...
05_23 种设计模式之《建造者模式》
文章目录 一、建造者模式基础知识建造者模式的结构建造者模式的应用场景 一、建造者模式基础知识 建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种优雅的方式来创建复杂对象,同时隐藏其构建过程。这种模式允许你通…...

详细分析Spring Security OAuth2中的JwtAccessTokenConverter基本知识(附Demo)
目录 前言1. 基本知识2. Demo3. 实战 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 JwtAccessTokenConverter 是 Spring Security OAuth2 中的一…...

python习题2
1、输出一个年份,判断其是不是闰年 #输入一个年份,判断其是否是闰年 y eval(input()) if y%4 0 and y%100 ! 0:print("是") elif y%4000:print("是") else:print("不是") 2、模拟智能客服: 按1查询账户余额…...

CVSS 4.0 学习笔记
通用漏洞评分系统(CVSS)捕获了主要技术软件、硬件和固件漏洞的特征。其输出包括数字分数,表明与其他漏洞。 以下因素可能包括但不限于:监管要求、客户数量受影响、因违约造成的金钱损失、生命或财产受到威胁,或潜在漏洞的声誉影响。这些因素在CVSS评估范围之外。 CVSS的好…...
解决 GPTQ 模型导入后推理生成 Tokens 速度很慢的问题(从源码重新安装 Auto-GPTQ)
这里解决的是使用 Auto-GPTQ 或者 Transformers 导入 GPTQ 模型后推理速度很慢的问题。 值得注意的是,这个问题很有可能是因为安装不正确,所以 GPTQ 无法正确使用 GPU 进行推理,也就是说无法进行加速,即便 print(model.device) 显…...

NDC美国药品编码目录数据库查询方法
NDC(National Drug Code)翻译为“国家药品代码”,是美国食品药品监督管理局(FDA)制定的一种药品标识系统,用于唯一标识药品。这个编码系统主要目的是为精准识别和追踪不同药品而建设,行业人员和…...
vue3的v-model使用
vue3的v-model使用 单个绑定值 子组件 props: [‘modelValue’], emits: [‘update:modelValue’], 注:modelValue是默认的,如果只有一个需要绑定v-model,可使用modelValue 此时父组件写法 <CustomInput v-model"searchText"…...
Go语言实现长连接并发框架 - 消息
文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,上篇博客实现了对连接的封装,那我们对连接的读写操作涉及数据格式的定义,我们采用统一的数据格式。使用我们这种数据格式的数据,我们将其称之为…...

湖南(市场咨询)源点调研 如何明确调研焦点与分析单位的特征
湖南市场调研源点咨询认为,调研过程中定义问题阶段的部分工作涉及弄清究竟是对谁进行调研,也就是感兴趣人群,我们发现这与样本的选择有关。在调研过程的设计阶段弄清楚感兴趣人群非常重要,之后才可以决定选择哪种调研类型进行调研…...
java 方法引用与构造器引用
Java 方法引用和构造器引用是 Java 8 引入的重要特性,它们进一步简化了 Lambda 表达式的书写,使得代码更加简洁和易读。下面详细介绍方法引用和构造器引用的概念、用法及示例。 方法引用 方法引用是一种简化 Lambda 表达式的语法糖,它允许通…...
python3的语法
知识简介 基础语法就像比赛规则,比如比赛跑步,咱们不能跑到别人的跑道去吧,比赛打拳,先说好不能踢裆。 正文 一、python3的基础语法 1、编码 python的源码文件.py一般是utf8编码的,有时候咱们在执行源码文件的时候报…...
Spring Data JPA中的锁机制
当多个事务同时修改同一条记录时,可能会导致数据不一致的问题。为了确保并发事务中的数据一致性,可以使用锁机制。常见的两种锁机制是悲观锁和乐观锁。下面是这两种锁机制的详细讲解。 1. 悲观锁(Pessimistic Locking) 概念&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...