package.json 中的 dependencies
发表于:2023-11-05 | 分类: 学习

dependencies

dependencies 表示该项目在运行时所需要用到的依赖项。

  • 如果你开发的项目依赖于某个包来运行,那么你就可以选择将你所依赖的包添加到 dependencies 中。

    install 时该依赖将会被下载,并可在项目的代码中使用

  • 当你开发一个项目需要用到一个 A 包时,假设 A 包的 dependencies 中存在如下定义
    {
    "dependencies": {
    "B": "*"
    }
    }

devDependencies

devDependencies 表示在开发时所需要用到的或依赖的包。

  • 如果你的项目在开发中依赖某个包,但是在运行时不依赖,则可以将该包添加到 devDependencies

    install 时该依赖将会被下载,可以在代码中使用,不要在项目要上线的代码中使用。

  • install 时依赖包中的 devDependencies 将会被忽略,不会被安装。

peerDependencies

peerDependencies 主要用于依赖包中,表示安装该包时还需要安装哪些包,乍一看非常类似 dependencies,不过场景和行为都存在一定差异。

  • peerDependencies 主要用于依赖包中,在项目中不起作用。

    installpeerDependencies 不会被安装,开发时一般会配合 devDependencies 来实现开发和发包时的版本解耦。

  • installpeerDependencies 不会安装,但是包管理器会检查项目的依赖与 peerDependencies 是否匹配,如果版本不匹配或未安装,将会弹出警告。

optionalDependencies

optionalDependencies 用于定义可选依赖项,和 dependencies 非常类似,主要的差别在于:在 optionalDependencies 中的依赖包安装报错甚至找不到时不会影响到包管理器的安装行为。

  • install 时会被安装,但是安装失败时不会中断安装行为,程序依旧可以正常运行。项目中使用时应该通过判定该包是否存在来决定所需要执行的代码。
  • install 时会被安装,但是安装失败时不会中断安装行为,程序依旧可以正常运行。

bundleDependencies/bundledDependencies

bundleDependencies 是一个较为特殊的依赖项定义,不同于其它依赖项定义,他的数据结构是一个数组,需要配合 dependencies 使用。

  • bundleDependencies 在项目中不起作用,在项目作为包发布时通过 npm pack,将会把 bundleDependencies 中的依赖包的本地代码和该项目包一起打包成一个文件。
  • install 时通过 url 指定 pack 打包好的文件,将会将文件中打包的依赖解压到包目录,而不会去根据 dependencies 中的定义去安装 bundleDependencies 中的包。
上一篇:
ES6模块与CommonJS模块的差异
下一篇:
package.json解析