version
?字段表示包的版本号,大致符合?x.x.x
?的格式,严格来说应该叫?major.minor.patch
(主版本号.次版本号.修订号
),如果要进一步了解版本号相关的知识,我们可以阅读以下文章来详细了解什么是语义化版本。
依赖信息的结构是一个对象,其中依赖包的名称作为键(key),依赖的版本约束作为值(value)。
{
"dependencies": {
"lodash": "^4.17.21",
},
"devDependencies": {
"vite": "~4.2.0"
}
}
版本约束限制了包管理器为项目安装依赖时可选的版本范围:
^
?的含义是安装最新的?minor
?版本。例如?^1.2.0
?的约束下,会为项目安装最新的?minor
?版本?1.X.Y
,但不会安装下一个?major
?版本?2.0.0
。~
?的含义是安装最新的?patch
?版本。例如?~1.2.0
?的约束下,会为项目安装最新的?patch
?版本?1.2.X
,但不会安装下一个?minor
?版本?1.3.0
。?
很多情况下,我们其实并没有真正搞懂常见的三种依赖类型——?dependencies
、devDependencies
、peerDependencies
?的真正含义与表现。这里简单给出一个表格说明帮助大家正确理解。
?
依赖类型 | 项目中 | 依赖中 | 用途 |
---|---|---|---|
dependencies | 会被安装 | 会被安装 | 项目运行时依赖 |
devDependencies | 会被安装 | 不会被安装 | 项目在开发过程需要的依赖。一般构建工具、测试框架、代码规范工具都会被作为开发依赖 |
peerDependencies | 不会被安装 | 不会被安装。但是若其中声明的依赖没有被项目安装,或者版本不匹配时,会生成警告信息提示用户 | 定义项目需要的依赖环境。常用于表示插件和主框架的关系,如 @vitejs/plugin-vue 的 peerDependencies 中就声明了主框架 vite 和 vue |
?
在?workspace
?模式下,代码仓根目录通常不会作为一个子模块或者?npm
?包,而是**主要作为一个管理中枢,执行一些全局操作,安装一些共有的依赖。**下面介绍一些常用的中枢管理操作。
package.json
?文件。pnpm init
.npmrc
?配置pnpm config set <key> <value>
package.json
?中的依赖声明安装全部依赖,在 workspace 模式下会一并处理所有子模块的依赖安装。pnpm install
-w
?选项代表在?monorepo
?模式下的根目录进行操作。TypeScript
、Vite
、eslint
?等公共开发依赖装在这里。pnpm install -wD xxx
pnpm uninstall -w xxx
pnpm run xxx