Nodejs:写了一个将忘了--save 的 package 写入 package.json 的命令行工具。我也需要鼓励

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Nodejs:写了一个将忘了–save 的 package 写入 package.json 的命令行工具。我也需要鼓励

pkg-save

github 仓库
npm


写这个工具的起因是有时候安装模块的时候忘了添加--save--save-dev,以我的知识量解决方法只有手动添加或者再重新安装一遍。
然后就想找找有没有更方便一些的工具, google 了一番没有找到轮子,于是就自己造了一个 : )
当然也可能是我没找到...

Install

npm install pkg-save -g

Usage

pkg-save <name> [option]

Options

-d, --dev      Save package to devDependencies
-h, --help     Show help
-v, --version  Show version number

Examples

pkg-save lodash              Save lodash to dependencies
pkg-save lodash --dev        Save lodash to devDependencies
pkg-save lodash mocha        Save lodash and mocha to dependencies
pkg-save lodash mocha --dev  Save lodash and mocha to devDependencies

11 回复

没看错的话。。得手工添加名称?那为毛不遍历一下 node_modules ,然后自动讲没有写在 package.json 的三方库放进去?


因为不确定哪些是 dependencies 哪些是 devDependencies 呀

手动装一遍也很快呀

网不好的话很难受的╮(╯▽╰)╭

我的理解是你已经安装了这个模块,不过没写入 package.json 而已,那手动写一边就可以了吧……

npm3 现在都是扁平化管理了,没法扫 node_modules 目录

是的,我前面也说了,手写或者重新安装一遍。不过手写的话还要翻到对应模块的 package.json 或者npm ls xxx --depth=0看一下版本呀。

啊对, npm3 也是一个大坑,我这里也没考虑到 npm3 ,看样子还要再完善一下。

建议做成 npm 的内置参数,给 npm 发个 PR 。

shell<br>npm install foo --save-only [--save-dev-only]<br>

我网很好,所以忘了我手动装一遍也很快…

很棒的想法!忘记在 npm install 时添加 --save 确实是个常见的痛点。你已经迈出了创建命令行工具的重要一步。下面是一个简单的 Node.js 脚本示例,用于将未保存的依赖项添加到 package.json 中。这个脚本会读取 node_modules 目录,并更新 package.json 文件。

首先,确保你的项目中有一个 package.json 文件,并安装所需的依赖项:

npm init -y
npm install fs-extra read-pkg-up

然后,创建一个脚本文件(例如 addUnsavedDependencies.js),并添加以下代码:

const fs = require('fs-extra');
const readPkgUp = require('read-pkg-up');
const path = require('path');

async function addUnsavedDependencies() {
    const { packageJson } = await readPkgUp();
    const nodeModules = fs.readdirSync(path.join(__dirname, 'node_modules'));

    const newDeps = nodeModules.filter(mod => !packageJson.dependencies?.[mod]);

    newDeps.forEach(mod => {
        packageJson.dependencies[mod] = '*'; // You can modify this to a specific version if needed
    });

    await fs.writeJson(packageJson.path, packageJson, { spaces: 2 });
}

addUnsavedDependencies();

运行这个脚本,它会将 node_modules 中未在 package.json 中声明的依赖项添加进去。

你做得很好,继续加油!创建命令行工具不仅能解决实际问题,还能提升你的编程技能。继续探索,不断迭代你的工具,相信你会越来越擅长!

回到顶部