1.指定入口文件
当package被外部引入时import name from "myLib",指定默认入口文件。相同功能的配置项还有browser、module,这个没必要记!vite|webpack等一些工具也会增加一些自己的字段。main和export是比较通用的,关注即可
main:"index.js", // 标准格式
// 推荐:指定不同引入方式的入口文件 设置export后会忽略main
export:{
import:"/inde.mjs",
require:"/index.cjs"
}
export还可以指定多个输出目录
export:{
".":"/index.js", // 设置多个输出目录后就不能设置import和require字段了
"./sub":"/sub/index.js"
}
// 外部使用效果
import lib from "lib"; // 最终引入/index.js
import sub from "lib/sub";// 最终引入/sub/index.js
2.指定.d.ts申明文件
被外部引入时,指定的申明文件自动引入,实现在ts中的类型申明
types:"./index.d.ts"
3.生成全局命令
如果想让你的package像vite一样,在install之后可以在命令行中使用vite命令,那么可以在bin字段指定。
它会在全局或者局部(node_modules)中创建一个命令脚本,这取决你怎么去安装npm install -g|none
bin:{
"yourVite":"./bins/yourCli.js",// 指定命令执行的脚本
}
这样install后就可以在命令行中使用了
> yourVite -v
4.指定包开发时的模块格式
type指定包中的源码在运行时的模块格式
type:"module|commonjs" // module为esm风格 commonjs为cmd风格
5.工作空间
工作空间workspace在进行依赖项目开发时非常好用:比如开发类库时,需要实时看到类库改动后,在项目使用中的效果,就可以使用workspace。
它比较复杂和强大,这里单独用一篇文章来说明他使用和适用场景
6.依赖安装
dependencies和devDependencies可以说是很熟悉的字段
- dependencies:表示必须的依赖,使用npm i 安装的依赖会记录在此
- devDependencies:表示开发阶段的依赖,使用npm i -D | --save-dev安装的依赖会记录在此
dependencies:{},
devDependencies:{}, // 在npm i --production 时会跳过安装
6.发包常用控制字段
#s 指定包名
name:"package-name",
#s 指定版本
version:"1.0.0",
#s 功能描述
description:"文字描述",
#s 指定发布包中包含的文件,如果不想暴漏过多的源码可如此设置
files:["dist"],//包含指定文件
exclude:[".env"],//排除指定文件
#s 指定开源协议
license:"ISC", //不同的协议可控制别人拿到你的包之后是否可以二次开发、商用等
#s 搜索关键字
keyword:["cli","vue",...],
#s 指定依赖版本
engines:{
"node":">=18.0.0",
"npm":">=8.0.0"
},
#s 包主页,npm网站会自动解析展示
homepage:"https://www.xxx.com",
#s 作者信息,npm网站会自动解析展示
author:{
"name":"your name",
"email":"your email",
"url":"http://...",//作者的主页
},
contributors:[
{name:"",email:""},//贡献人员
],
#s 指定bug反馈地址 npm网站会自动解析展示
bugs: {
"url": "https://github.com/user/my-awesome-package/issues",
"email": "support@my-awesome-package.com" // 可选 不建议可能会收到大量垃圾邮件
},
#s 指定源码网站 npm网站会自动解析展示,这样别人就能知道在哪里看源码
repository: {
"type": "git", // 版本控制系统类型(通常为 git)
"url": "https://github.com/user/repo.git", // 仓库 URL
"directory": "packages/submodule" // 可选:如果包是 monorepo 中的子模块
}