package.json参数配置

113 阅读3分钟
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": "*", // 最新版本
}