npm中的package.json探究

本文详细探讨了npm的package.json文件,包括其结构、各项字段的含义和用途,如name、author、version、dependencies、scripts等。还介绍了版本控制符号(如~和^)的用法,并提到了package.json在项目管理和自动化脚本执行中的作用。
摘要由CSDN通过智能技术生成

npm package.json探究

写在前面

用了这么久的npm但是都没有探索过,今天探索下

参考资料

http://nodejs.cn/learn/the-package-json-guide

正篇

文件结构

对于应用程序,package.json 文件中的内容没有固定的要求。 唯一的要求是必须遵守 JSON 格式,否则,尝试以编程的方式访问其属性的程序则无法读取它。
说白了就是只要符合json格式就行
该文件可以使用命令npm init自动生成,当然也可以手动修改

name

{
   "name": "test-project"
}

软件包的名称
名称必须少于 214 个字符,且不能包含空格,只能包含小写字母、连字符(-)或下划线(_)。

author

{
   "author": "Yoshino"
},

也可以是这样

{
  "author": {
    "name": "Yoshino",
    "email": "",
    "url": "http://harekaze-misakiakeno.github.io/"
  }
}

软件包的作者名称

contributors

除作者外,该项目可以有一个或多个贡献者。 此属性是列出他们的数组

{
   "contributors": [
     "Akeno"
     ]
},

bugs

链接到软件包的问题跟踪器,最常用的是 GitHub 的 issues 页面

{
   "bugs": "http://harekaze-misakiakeno.github.io/"
},

这个地方说实话我也没搞懂,他的意思可能是采坑之后看配置文件,然后反馈么?不知道有没有懂的大佬解释一下

homepage

设置软件包的主页

{
   "homepage": "http://harekaze-misakiakeno.github.io/"
},

version

指定软件包的当前版本

{
   "version": "0.0.1"
},

第一个数字是主版本号,第二个数字是次版本号,第三个数字是补丁版本号。

这些数字中的含义是:仅修复缺陷的版本是补丁版本,引入向后兼容的更改的版本是次版本,具有重大更改的是主版本。

license

指定软件包的许可证

{
   "license": "MIT"
},

keywords

{
	"keywords": [
	  "hun",
	  "xian yu",
	  "la ji",
	  "mei qian tu",
	  "kan bu dao xi wang"
	]
}

此属性包含与软件包功能相关的关键字数组
在浏览 https://www.npmjs.com/ 网站时快速看到该包的关键字,以便找到你的软件包

description

此属性包含了对软件包的简短描述
如果要将软件包发布到 npm,则这个属性特别有用,人们可以知道该软件包是的作用。

  "description":  "了解package.json"

repository

此属性指定了此程序包仓库所在的位置
这里放的是nodejs中文网的链接

{
	"repository": "github:nodejscn/node-api-cn"
}

或者是这样

{
"repository": {
  "type": "git",
  "url": "https://github.com/nodejscn/node-api-cn.git"
  }
}

main

设置软件包的入口点。
当在应用程序中导入此软件包时,应用程序会在该位置搜索模块的导出。

{
  "main": "src/main.js"
}

private

如果设置为 true,则可以防止应用程序/软件包被意外发布到 npm 上

{
  "private": true
}

scripts

可以定义一组可以运行的 node 脚本

{
"scripts": {
  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  "start": "npm run dev",
  "unit": "jest --config test/unit/jest.conf.js --coverage",
  "test": "npm run unit",
  "lint": "eslint --ext .js,.vue src test/unit",
  "build": "node build/build.js"
  }
}

这些脚本是命令行应用程序。 可以通过调用 npm run XXXX 或 yarn XXXX 来运行它们,其中 XXXX 是命令的名称。 例如:npm run dev
可以为命令使用任何的名称,脚本也可以是任何操作
所以当你输入npm run dev的时候,其实背后做出了很多的操作

dependencies

设置作为依赖安装的 npm 软件包的列表。

当使用 npm 或 yarn 安装软件包时:

npm install <PACKAGENAME>
yarn add <PACKAGENAME>

该软件包会被自动地插入此列表中。

示例:

{
"dependencies": {
  "vue": "^2.5.2"
}
}

devDependencies

设置作为开发依赖安装的 npm 软件包的列表。

它们不同于 dependencies,因为它们只需安装在开发机器上,而无需在生产环境中运行代码。

当使用 npm 或 yarn 安装软件包时:

npm install --dev <PACKAGENAME>
yarn add --dev <PACKAGENAME>

该软件包会被自动地插入此列表中。

示例:

{
"devDependencies": {
  "autoprefixer": "^7.1.2",
  "babel-core": "^6.22.1"
}
}

engines

设置此软件包/应用程序要运行的 Node.js 或其他命令的版本

{
"engines": {
  "node": ">= 10.0.0",
  "npm": ">= 10.0.0",
  "yarn": "^0.13.0"
}
}

然而貌似我把npm改到>=10.0.0也不影响运行,不知为何

browserslist

用于告知要支持哪些浏览器(及其版本)。 Babel、Autoprefixer 和其他工具会用到它,以将所需的 polyfill 和 fallback 添加到目标浏览器

"browserslist": [
  "> 1%",
  "last 2 versions",
  "not ie <= 8"
]

browserslist官网https://github.com/browserslist/browserslist

命令特有的属性

package.json 文件还可以承载命令特有的配置,例如 Babel、ESLint 等。

每个都有特有的属性,例如 eslintConfig、babel 等。 它们是命令特有的,可以在相应的命令/项目文档中找到如何使用它们。

软件包版本

在上面的描述中,已经看到类似以下的版本号:〜3.0.0 或 ^0.13.0。 它们是什么意思,还可以使用哪些其他的版本说明符?

该符号指定了软件包能从该依赖接受的更新。

鉴于使用了 semver(语义版本控制),所有的版本都有 3 个数字,第一个是主版本,第二个是次版本,第三个是补丁版本,具有以下规则:

~: 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
^: 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
*: 如果写入的是 *,则表示接受所有的更新,包括主版本升级。

: 接受高于指定版本的任何版本。
=: 接受等于或高于指定版本的任何版本。
<=: 接受等于或低于指定版本的任何版本。
<: 接受低于指定版本的任何版本。
还有其他的规则:

无符号: 仅接受指定的特定版本。
latest: 使用可用的最新版本。
还可以在范围内组合以上大部分内容,例如:1.0.0 || >=1.1.0 <1.2.0,即使用 1.0.0 或从 1.1.0 开始但低于 1.2.0 的版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值