npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

multi-dependent-management

v0.4.0

Published

>基于 node.js 的命令行工具,用于管理多个项目的依赖。

Downloads

7

Readme

multi-dependent-management

基于 node.js 的命令行工具,用于管理多个项目的依赖。

Coverage Status

概述

该工具是用于管理多个项目的依赖,根据你输入的路径,递归查询所有的 package.json(默认忽略 node_modules 文件),进行依赖管理:

  1. 依赖批量版本升级(基于 npm-check-updates
  2. 依赖批量移除
  3. 依赖批量添加/变更
  4. 查看多项目内的依赖差异

安装

# 使用 npx 执行
npx multi-dependent-management
# 全局安装
npm i multi-dependent-management -g

快速使用

依赖版本升级

根据你选中的项目,对依赖进行批量升级。注意,这个只是修改你的 package.json,而不会执行 npm install

# -p 后面带你要执行的项目路径
mdm upgrade -p ./project

首先会递归查询该路径下所有的 package.json 文件,然后使用 npm-check-updates 检查每个项目的依赖版本是否最新,将可以更新的依赖一一展现出来,让你选择哪个依赖需要更新:

依赖移除

根据你选中的项目,对依赖进行批量移除。

# -p 后面带你要执行的项目路径
mdm remove -p ./project

首先会让你输入要移除的依赖,使用 , 分隔每个依赖名。

接着会递归查询该路径下所有的 package.json 文件,让你选择哪个项目需要移除依赖。

依赖变更

根据你选中的项目,对依赖进行批量变更。

# -p 后面带你要执行的项目路径
mdm update -p ./project

首先会让你输入要更新的依赖,使用 , 分隔每个依赖名。

接着会让你选择是否安装依赖:

如果选择“是”,则会执行 npm install {package}

否则执行:npm install {package} --package-lock-only

最后会递归查询该路径下所有的 package.json 文件,让你选择哪个项目需要更新依赖。

变更操作,会使用 npm install 进行依赖变更,而不是直接修改 package.json 文件,保证包名的顺序一致。

查看依赖差异

根据你选中的项目,查看各个项目的依赖版本差异。

# -p 后面带你要执行的项目路径
mdm diff -p ./project

diff 功能,会根据你选中的项目的依赖版本,返回需要升级的依赖和对应最高的版本。当你选择更新,会修改所有匹配的依赖变为当前最高的版本。

简单来说,就是同步你选中项目所有依赖的版本,变成一样。

diff 的更新操作,是直接修改 package.json,不会进行依赖安装。

脚本命令执行

该功能根据你选择的项目,批量执行脚本命令。

# -p 后面带你要执行的项目路径
mdm shell -p ./project

shell 功能,会根据你选中的项目,执行相关的脚本命令,该功能自由度比较高,可以搭配不同的操作。

选完要处理的项目后,会让你先输入都执行的命令,没有的话,不输入保存就行了:

接着就是输入每个项目单独执行的命令:

最后会让你确认是否按照上面的顺序执行:

执行结果:

路径匹配

# 过滤 /demo/a/ 下的所有文件夹 和所有子路径中末位是 b 的文件夹
mdm update -p /demo -e /demo/a/**,**/b

-p 参数是从哪个路径开始递归查询,-e 参数是对路径进行过滤,支持传入多个值,用 , 隔开。

我这里的处理,是将传给 -e 的值,转成数组并去空格处理,然后使用 minimatch(path, {value}) 进行判断,如果返回 true 代表命中,则过滤该路径。

详细匹配规则,参考 minimatch

应用场景

我现在日常开发,因为人少系统多,经常是一两个前端去管理多个简单的管理系统,而这些系统都使用内部的组件库进行搭建:

如果当我们的组件库有 bug 或者有功能迭代,要多个系统同时去发布修复版,这时候就有下面的流程:

有 10 个系统,就要进行 10 次这样的操作,非常麻烦,所以才开发该工具。

使用该工具,只需通过一次或两次命令就可以完成。

两次命令:

# 去到对面的目录,添加相关的过滤条件
mdm upgrade -p ./project -e **/abc,**/abc2
# 升级完需要的依赖后,执行相关提交命令
mdm shell -p ./project -e **/abc,**/abc2
# shell 模式会进行编辑状态,输入:
# git add ./
# git commit -m 'fix: 更新依赖,修复 xx 问题'
# git push origin fix

当执行完上述步骤,对应的项目就会更新选中的依赖,并根据你输入的 shell 命令,提交到你的仓库。

一次命令:

# 可以直接通过 shell 命令,一次完成
mdm shell -p ./project -e **/abc,**/abc2
# shell 模式会进行编辑状态,输入:
# npm i [email protected] -S
# git add ./
# git commit -m 'fix: 更新依赖,修复 xx 问题'
# git push origin fix

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

TODO

  1. ~~添加操作命令的配置项,比如文件匹配限制~~
  2. ~~添加命令行操作,可以对项目批量执行 shell 命令~~
  3. ~~添加依赖差异查看命令,查询匹配的项目,查看项目内每个依赖和当前最高版本的差异~~