dependencies、devDependencies、peerDependencies 区别 以及验证

原文链接: dependencies、devDependencies、peerDependencies 区别 以及验证

上一篇: url、base64、blob 相互转换方法

下一篇: tampermonkey 编写B站视频截图脚本

发个简单的包

  "dependencies": {
    "axios": "^0.19.2"
  },
  "peerDependencies": {
    "lodash": "^4.17.15"
  },
  "devDependencies": {
    "vue": "^2.6.11"
  }

安装

up-f07c285df8f470b1d90065168a9ae556feb.png

三者区别, 详细规则 参考:

npm package

dependencies、devDependencies、peerDependencies、optionalDependencies 区别

dependencies:

npm i  -S

应用正常运行所必须, 在其他人安装你发布的包时, 会将这些依赖也安装

devDependencies:

npm i -D

开发必须, 本地开发时需要,  其他人在使用时不会安装这些依赖, 毕竟用户只需要用就行了............

up-3cdeb1b7170ab5d9fab80d202bfff2f042e.png

peerDependencies:

同等依赖, 貌似要手动添加和安装, 比如我写的插件依赖HTMLwebpackPlugin, 但是我包里并没有直接require, 但是使用我的插件时必须用到HTMLwebpackPlugin, 这时候就可以在peerDependencies中添加HTMLwebpackPlugin, 如果其他人使用的时候没有安装HTMLwebpackPlugin则npm会有警告

up-f2e941fbd610d436434e7a6e8db229a06e3.png

再看下nodo_modules中的包, 居然有很多, so.... 这个应该就是子包中含有dependencies, 可以用代码进行验证!

up-8805470d4113c2331c6ae4094a4e8357b67.png

少了一个插件的包, 因为这个插件是在根package中

up-8757bd7cb7a9a0946c83583263a27b5d490.png

依次遍历node_modules 中的每个包的依赖, 将其中的dependencies取出来放到数组中, 最后用set去重, 并按照字典序输出

const path = require("path");
const fs = require("fs");
const root = path.resolve("./node_modules");

let libList = []

const files = fs.readdirSync(root);

for (let f of files) {
  var fileStat = fs.statSync(path.join(root, f));
  if (fileStat.isDirectory()) {
    let package = require(path.join(root, f, "package.json")) || {};
    let dependencies = Object.keys(package.dependencies || {});
    libList = libList.concat(dependencies);
  }
}
const libSet = new Set(libList);
console.log("----\n");
console.log([...libSet].sort().join("\n"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值