package.json配置详解

package.json文件

执行 npm init 命令,会在当前目录生成一个 package.json 文件

这个文档是你需要知道的关于你的 package.json 文件中需要什么的所有信息。它必须是实际的 JSON,而不仅仅是一个 JavaScript 对象文字。

//package.json
{
  //如果你打算发布你的包,在你的package.json中最重要的事情是名称和版本字段,因为它们是必需的。名称和版本一起构成了一个标识符,该标识符被认为是完全唯一的。对软件包的更改应与对版本的更改一起沿着。
  // 如果您不打算发布您的软件包,则名称和版本字段是可选的。
  "name": "axios",
  "version": "1.7.2",
  // 在里面加上描述。这是一个字符串。这有助于人们发现您的软件包,因为它在npm search中列出。
  "description": "Promise based HTTP client for the browser and node.js",
    // 把关键字放进去。这是一个字符串数组。这有助于人们发现您的软件包,因为它在npm search中列出。
  "keywords": [
    "xhr",
    "http",
    "ajax",
    "promise",
    "node"
  ],
  // 项目主页的URL。
  "homepage": "https://axios-http.com",
  // 您的项目问题跟踪器的URL和/或应向其报告问题的电子邮件地址。这些对遇到您的软件包问题的人很有帮助。
  "bugs": {
    "url": "https://github.com/axios/axios/issues",
    "email": "project@hostname.com"
  },
  // 你应该为你的软件包指定一个许可证,这样人们就知道他们可以如何使用它,以及你对它的任何限制。
   "license": "MIT",
  //  "license": "BSD-3-Clause"
  //  "license": "(ISC OR GPL-3.0)"
  //  "license": "SEE LICENSE IN <filename>"
  //作者 人员字段,email和url都是可选的。
  "author": "Barney Rubble",
  "email": "b@rubble.com",
  "url": "http://barnyrubble.tumblr.com/",
  //  "author": "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
  // 资金
  "funding": {
    "type": "individual",
    "url": "http://example.com/donate"
  },
  // main字段是一个模块ID,它是程序的主要入口点。如果未设置main,则默认为包根文件夹中的index.js。
  "main": "index.js",
  // 如果你的模块是要在客户端使用的,那么应该使用浏览器字段而不是主字段。这有助于提示用户它可能依赖于Node.js模块中不可用的原语。
  // browser 字段提供对浏览器环境更友好的模块入口。
  "browser": {
    "./lib/adapters/http.js": "./lib/helpers/null.js",
    "./lib/platform/node/index.js": "./lib/platform/browser/index.js",
    "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js"
  },
//   很多软件包都有一个或多个可执行文件,他们想安装到PATH中。npm使这变得非常容易(事实上,它使用此功能来安装“npm”可执行文件。)
// 要使用这个,请在package.json中提供一个bin字段,它是命令名到本地文件名的映射。当这个软件包被全局安装时,该文件将被链接到全局bins目录中,或者将创建一个cmd(Windows命令文件)来执行bin字段中的指定文件,因此它可以由name或name.cmd(在Windows PowerShell上)运行。当这个包作为一个依赖项安装在另一个包中时,这个文件将被链接到这个包中,它可以直接通过npm exec或通过其他脚本中的名称在通过npm run-script调用它们时使用。
  "bin": {
    "myapp": "bin/cli.js",
    "axios": "bin/api.js"
  },
  // 指定代码所在的位置。这对那些想做贡献的人很有帮助。如果git repo在GitHub上,那么npm repo命令就可以找到你。
  "repository": {
    "type": "git",
    "url": "https://github.com/axios/axios.git"
  },
  // 脚本
  "scripts": {
    "start": "node ./sandbox/server.js",
    "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m",
    "examples": "node ./examples/server.js",
  },
  // “config”对象可用于设置在升级过程中持续存在的包脚本中使用的配置参数。
  "config": {
    "port": "8080",

  },
  // 依赖
  // dependencies字段中声明的是项目的生产环境中所必须的依赖包。当使用 npm 或 yarn 安装npm包时,该npm包会被自动插入到此配置项中
  "dependencies": {
    "foo": "1.0.0 - 2.9999.9999",
    "bar": ">=1.0.2 <2.1.2",
    "baz": ">1.0.2 <=2.3.4",
    "boo": "2.0.1",//完全等于
    "qux": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
    "asd": "http://asdf.com/asdf.tar.gz",
    "elf": "~1.2.3",//相似版本
    "two": "2.x",//
    "lat": "latest",
    "antd": "^5.12.8",
    "antd-img-crop": "^4.12.2",
    "antd-style": "^3.6.1",
    // 本地路径
    "bar": "file:../foo/bar",
    // 本地路径 直接链接到项目下的ckeditor5目录
    "ckeditor5-custom-build": "file:./ckeditor5",
  },
  // devDependencies中声明的是开发阶段需要的依赖包,如Webpack、Eslint、Babel等,用于辅助开发。它们不同于 dependencies,因为它们只需安装在开发设备上,而无需在生产环境中运行代码。当打包上线时并不需要这些包,所以可以把这些依赖添加到 devDependencies 中,这些依赖依然会在本地指定 npm install 时被安装和管理,但是不会被安装到生产环境中。
  "devDependencies": {

  },
  // 在某些情况下,你想表达你的包与宿主工具或库的兼容性,而不一定要做这个宿主的require。这通常被称为插件。
//   有些情况下,我们的项目和所依赖的模块,都会同时依赖另一个模块,但是所依赖的版本不一样。比如,我们的项目依赖A模块和B模块的1.0版,而A模块本身又依赖B模块的2.0版。大多数情况下,这不是问题,B模块的两个版本可以并存,同时运行。但是,有一种情况,会出现问题,就是这种依赖关系将暴露给用户。
// 最典型的场景就是插件,比如A模块是B模块的插件。用户安装的B模块是1.0版本,但是A插件只能和2.0版本的B模块一起使用。这时,用户要是将1.0版本的B的实例传给A,就会出现问题。因此,需要一种机制,在模板安装的时候提醒用户,如果A和B一起安装,那么B必须是2.0模块。
// peerDependencies字段就是用来供插件指定其所需要的主工具的版本。
// npm3.0版本开始 不会默认安装了
  "peerDependencies": {
    "tea": "2.x"
  },

// bundledDependencies配置项是一个数组,数组里可以指定一些模块,这些模块将在这个包发布时被一起打包。
// 需要注意,这个字段数组中的值必须是在dependencies, devDependencies两个里面声明过的包才行
  "bundledDependencies":[],
  //   如果需要在找不到包或者安装包失败时,npm仍然能够继续运行,则可以将该包放在optionalDependencies对象中,optionalDependencies对象中的包会覆盖dependencies中同名的包,所以只需在一个地方进行设置即可。
// 需要注意,由于optionalDependencies中的依赖可能并为安装成功,所以一定要做异常处理,否则当获取这个依赖时,如果获取不到就会报错。
  "optionalDependencies":{

  },
  // 引擎
  // 当我们维护一些旧项目时,可能对npm包的版本或者Node版本有特殊要求,如果不满足条件就可能无法将项目跑起来。为了让项目开箱即用,可以在engines字段中说明具体的版本号
  // 需要注意,engines只是起一个说明的作用,即使用户安装的版本不符合要求,也不影响依赖包的安装
  "engines": {
    "node": ">=0.10.3 <15",
    "npm": "~1.0.20"
  },
  // 操作系统
  "os": ["darwin", "linux","!win32"],
  //
  "cpu": ["x64", "ia32","!arm", "!mips"],
  // 如果你在package.json中设置了"private": true,那么npm将拒绝发布它。
  "private": true,
  "types": "index.d.ts",
  "type": "module",//支持使用es module
}

详细字段描述:https://docs.npmjs.com/cli/v10/configuring-npm/package-json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值