package.json参数
配置包含了项目的元数据,定义了项目的依赖关系、脚本命令、构建配置等,主要分为7大类:
- 描述配置:包括名称,版本,描述,仓库,作者等,部分会展示在 npm 官网上;
- 文件配置
- 脚本配置
- 依赖配置
- 发布配置
- 系统配置
- 第三方配置
常用配置项说明参考
{
"name": "project-name", // 项目名称
"version":"0.0.1", // 版本 主版本号.次版本号.修订号
"description": "antd-theme", // 项目描述
"keywords":["node.js","antd", "theme"], // 关键字,一个字符串地址
"homepage": "https://zhuye.com", // 项目主页的url
"bugs":{ // 项目问题跟踪的url和可反馈问题的电子邮件 如果提供了 url,它将被 npm bugs 命令使用
"url":"http://path/to/bug",
"email":"projectquesion@xxxx.com"
},
"license": "ISC", //许可证
"author": "zhangsan", // 一个人员
"contributors":[{"name":"zhangsan lisi","email":"yindong@xxxx.com"}],//一组人员
"bin": { // 配置可以直接在命令行直接运行的node.js脚本
"my-command": "./bin/my-command.js"
},
"funding": [ // 提供有关帮助资,助包开发的方法的最新信息,或url对象,或字符串 URL,或以下数组
{
"type" : "individual",
"url" : "http://example.com/donate"
},
"http://example.com/donateAlso",
{
"type" : "patreon",
"url" : "https://www.patreon.com/my-account"
}
],
"files": "",//通过 files 指定需要跟随一起发布的内容
// 在node支持ES模块后,要求ES模块采用 .mjs后缀文件名。只要遇到 .mjs 文件,就认为它是 ES 模块。
// 如果不想修改文件后缀,就可以在 package.json文件中,指定 type 字段为 module。
"type": "module",
"main": "./dist/default.js", // 项目入口文件
// main 字段里指定的入口文件在 browser 和 Node 环境中都可以使用。
// 如果只想在 web 端使用,不允许在 server 端使用,可以通过 browser 字段指定入口。
"browser": "./browser/index.js",
"module": "./index.js", // 项目可以指定 ES 模块的入口文件
"exports": { //exports 字段可以配置不同环境对应的模块入口文件,并且当它存在时,它的优先级最高。
"require": "./index.js",
"import": "./index.mjs"
},
// 用于在本地的根目录下管理多个子项目。可以自动地在 npm install 时将 workspaces 下面的包,软链到根目录的 node_modules 中,不用手动执行 npm link 操作。
"workspaces": [
"packages/*"
],
"repository": {
"type": "git",
"url": "https://path/to/url", // 项目仓库地址
"directory": "packages/react"
},
"scripts": { // 项目运行脚本
"start": "webpack serve --config webpack.config.dev.js --progress"
},
"config": { "port" : "8080" }, // config字段用于添加命令行的环境变量
"dependencies": {}, // 项目运行所依赖的模块
"devDependencies": { // 指定项目开发所需要的模块
"@babel/core": "^7.14.3",
"@babel/preset-env": "^7.14.4",
"@babel/preset-react": "^7.13.13",
// ...
},
"peerDependencies": { // 用来供插件指定其所需要的主工具的版本 对等依赖关系
"tea": "2.x"
},
"bundledDependencies": [ // 定发布的时候会被一起打包的模块.
"renderized", "super-streams"
],
"engines": { "node" : ">=0.10.3 <0.12", "npm" : "~1.0.20" }, // 模块运行的平台
"os" : [ "win32", "darwin", "linux" ], // 操作系统
"cpu" : [ "x64", "ia32" ], // 限制模块只能在某种架构的cpu下运行
"private": true, //如果设置为true,npm将拒绝发布此包
"publishConfig": {}, // 通常publishConfig会配合private来使用,如果你只想让模块被发布到一个特定的npm仓库,如一个内部的仓库。
"types": "./index.d.ts", // 指定 TypeScript 的类型定义的入口文件
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": [
"eslint --fix",
"git add -A"
]
}
// lint-staged 是用于对 git 的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作。
// lint-staged通常配合husky这样的 git-hooks 工具一起使用。git-hooks用来定义一个钩子,这些钩子方法会在git工作流程中比如 pre-commit,commit-msg 时触发,可以把 lint-staged 放到这些钩子方法中。
}
依赖安装版本符号含义
"dependencies": {
"vue": "3.2.11", // 锁定版本
"jquery": "^2.0.0", // ^表示只锁定主版本号,后面获取最新的版本
"underscore": "~1.12.0", // ~表示锁定主版本号和次版本号,后面获取最新版本
"vite": "*2.1.0", // *表示最新版本
"vite": "*", // 最新版本
}