◆

package.json 配置字段详解大全

2023-02-02 01:370

package.json 配置详解

name

项目/模块名称,长度必须小于等于 214 个字符,不能以 . (点)或者 _ (下划线)开头,不能包含大写字母。

名称的第一部分(如 @scope/是可选的,用作名称空间),一般情况下 @scope 是自己 npm 账号的名称

{
  "name": "@vft/tsconfig"
}

version

包的版本号。

{
  "version": "0.0.6"
}
# 升级补丁版本号
npm version patch
# 升级小版本号
npm version minor
# 升级大版本号
npm version major

description

包的描述。可以帮助人们在使用 npm search 时找到这个包。

{
  "description": "A base TSConfig for working with Vue.js"
}

keywords

本包的关键字数组,一个字符串数组,方便别人搜索到本模块

{
  "keywords": ["vue", "tsconfig"]
}

当我们使用 npm 检索模块时,会对模块中的 description 字段和 keywords 字段进行匹配,写好 package.json 中的 description 和 keywords 将有利于增加我们模块的曝光率。

homepage

项目主页 url

{
  "homepage": "https://github.com/Miofly/tsconfig#readme"
}

bugs

填写一个 bug 提交地址和一个邮箱,当你的模块遇到问题时,别人可以通过 bug 地址或者邮箱联系到你

{
  "bugs": {
    "email": "953212389@qq.com",
    "url": "https://github.com/Miofly/tsconfig/issues"
  }
}

license

你应该为你的开源代码模块制定一个开源协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制

  • MIT: 是最少约束的选择。
  • GPL: 是最多约束的。

如果是个人随意作品,建议 MIT 许可。如果是公司或者需要严格保护的开源产品,GPL。

{
  "license": "MIT"
}

files

需要发布到 npm 上的文件,默认值为 [“*”],这意味着它将包括所有文件

{
  "files": ["*"]
}

你还可以在包的根目录或子目录中提供 .npmignore 文件,以防止某些文件被发布。 .npmignore 文件的工作原理与 .gitignore 一样。 如果存在 .gitignore 文件,而缺少 .npmignore,则将改用 .gitignore 的内容。 files 字段内容会覆盖 .npmignore 和 .gitignore 的内容。

main

用来指定加载的入口文件,当不指定 main 字段时,默认值是模块根目录下面的 index.js 文件。

{
  "main": "tsconfig.json"
}

browserslist

指定该模板供浏览器使用的版本。Browserify 这样的浏览器打包工具,通过它就知道该打包那个文件。

{
  "browserslist": [
    "> 0.5%",
    "last 2 versions",
    "Firefox ESR",
    "not dead",
    "IE 11",
    "not IE 10"
  ]
}

bin

将某些可执行 Javascript 文件公开给父包的字段。

如下当我们全局安装此包时,则可以通过 wfly 命令去执行一些 node 命令,比如,我们的 ./lib/index.cjs 中存在 delete 命令, 就可以执行,wfly delete '文件名称'

如果不是全局安装那么就只能在当前工程目录执行改命令。

{
  "bin": {
    "wfly": "./lib/index.cjs"
  }
}

repository

项目的 git 主页

{
  "repository": {
    "type": "git",
    "url": "https://github.com/Miofly/tsconfig"
  }
}

scripts

可以运行的一些 shell 命令

config

dependencies

生产环境依赖

devDependencies

开发环境依赖

peerDependencies

假设我在 npm 发布了这样一个包,它的 package.json 信息如下,可以看出其中 peerDependencies 中是 "vue": "3.0.0"。

{
  "name": "@wfly/test-one",
  "version": "1.0.2",
  "scripts": {
    "pub": "pnpm version patch && pnpm publish"
  },
  "peerDependencies": {
    "vue": "3.0.0"
  },
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org"
  }
}

这时候我们新开一个项目比如,test-two,在 test-two 中的 package.json 信息如下,主要是安装上述的包。

{
  "name": "@wfly/test-two",
  "dependencies": {
    "@wfly/test-one": "*"
  }
}

然后我们执行安装,场景是在 pnpm 下执行,执行 pnpm install,如图所示,我们安装成功了,但是出现了如图所示的报错信息。

报错信息为我们没有安装 @wfly/test-one 中的对等依赖 peerDependencies 的 vue": "3.0.0, 然后它提示我们可以在 .npmrc 中设置 auto-install-peers=true 自动安装对等依赖 或者 如果我们不希望 pnpm 提示对等依赖未安装的报错可以在 .npmrc 中配置 strict-peer-dependencies=false

packageJson配置详情

首先测试一下 auto-install-peers=true,我们把安装好的 node_modules 和 pnpm-lock.yaml 删除,配置好 .npmrc 后重新安装

optionalDependencies

engines

private

publishConfig

workspaces

type

module

unpkg

typings

sideEffects

💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEpackage.json 配置字段详解大全加载中