package.json
参考了npm官网package.json概述及一些文章,还有一些自己的理解或者偏见,各位看官见仁见智,辩证着看
{
"name": "sr-util-validator", // 发布包名,在发布的npm服务中需要唯一
"version": "0.0.1", // 版本号,遵循semver规范
"description": "sr-util-validator", // 项目描述
"keywords": "", // 关键字,相当于标签,利于搜索
"homepage": "", // 项目主页
"license": "", // 协议
"author": "", // 作者
"files": [], // 发布的文件列表, 默认情况时package.json/readme.md/LICENCE/CHANGES/NOTICE/main指定文件
"main": "index.js", // 包入口文件,如未指定,则默认为根目录的index.js, 引入方式require,遵循COMMONJS规范,最古老最常用的入口文件
"module": "", // 包入口文件,优先级高于main, 主要是为了遵循ESM规范(支持tree shaking),npm官方规范还没有引入这个字段,但是主流构建工具webpack,rollup,vite等都支持这个字段,
"browser": "", // 对浏览器环境提供更友好的模块入口,没怎么用过
"exports": { // 允许通过访问路径、运行环境(node/browser),模块类型(require/import/types/css等)组合确定最终的入口文件
"require": "lib/index.js", // 使用require方式引入时,默认访问路径为lib/index.js
"import": "es/index.js", // 使用import方式时,默认访问路径为es/index.js
},
"bin": "index.js", // 一般项目用不到,开发脚手架时使用,安装一个包之后,会将bin指定文件加入到nodejs的一个可执行的目录中,在终端直接可以调用
"dependencies": {}, // 项目依赖
"peerDependencies": {}, // 项目宿主环境必要的依赖,比如开发一个vue3组件库,不需要把vue打包到组件库里,可以把vue作为peerDependencies, 告诉使用组件库的宿主环境,要使用组件库先安装vue3
"optionalDependencies": {}, // 可选依赖,如果安装这个依赖失败的时候,不终止程序继续安装构建
"devDependencies": {}, // 开发依赖,比如vite,scss,webpack这种只在开发环境使用,生产环境不需要的依赖
"scripts": {}, // 命令行配置
"engines": "", // 项目环境的要求,比如npm,node版本
"private": false, // 项目是否为私有, 如果设置为true,执行npm publish到npm时会拒绝发布
"publishConfig": { // 发布配置
"registry": "URL_ADDRESS"
}
}
参考
npm官网package.json概述
为何有 module
package.json 导入模块入口文件优先级详解 main, browser, module, exports