在嵌套子文件夹中安装npm packages的最正确方法是什么?

my-app
  /my-sub-module
  package.json
package.json

npm installmy-app中运行时,让/my-sub-module中的packages自动安装的最佳方式是什么?

推荐答案

如果您想运行单个命令在嵌套的子文件夹中安装npm软件包,可以通过根目录中的npm和main package.json运行脚本.脚本将访问每个子目录并运行npm install.

下面是一个.js脚本,将实现预期的结果:

var fs = require('fs');
var resolve = require('path').resolve;
var join = require('path').join;
var cp = require('child_process');
var os = require('os');
    
// get library path
var lib = resolve(__dirname, '../lib/');
    
fs.readdirSync(lib).forEach(function(mod) {
    var modPath = join(lib, mod);
    
    // ensure path has package.json
    if (!fs.existsSync(join(modPath, 'package.json'))) {
        return;
    }

    // npm binary based on OS
    var npmCmd = os.platform().startsWith('win') ? 'npm.cmd' : 'npm';

    // install folder
    cp.spawn(npmCmd, ['i'], {
        env: process.env,
        cwd: modPath,
        stdio: 'inherit'
    });
})

请注意,这是一篇StrongLoop篇文章中的一个例子,专门讨论了模块化node.js项目 struct (包括嵌套组件和package.json个文件).

正如所建议的,您也可以通过bash脚本实现同样的功能.

编辑:使代码在Windows中工作

Node.js相关问答推荐

RSA-SHA 256签名算法未按预期表现

链接Inbox类方法,范围在哪里以及为什么发生变化?

node 上的磁盘压力

使用Node.js中的";类型";:";模块";不导入文件

TS[2339]:类型 '() => Promise<(Document & Omit) | 上不存在属性空>'

Node fetch 实现似乎与 Deno 和 Bun 不同,导致网站没有返回响应?

在mongoose虚拟属性中处理异步操作

我需要聚合两个 MongoDB 集合

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

nyc 代码覆盖不适用于 NodeJs Express 服务器

Cloudflare 522 错误 - javascript 客户端连接到 node 服务器

在系统启动时启动本地 node 服务器

如何更新 MongoDB 中对象数组中的键?

Sharp JS 依赖关系 destruct 了 Elastic Beanstalk 上的 Express Server

如何在 cypress 测试中进行计算

Dart 语言比 JavaScript (Node.js) 有什么好处

如何从 npm 注册表中删除 npm 包?

Mongoose - 保存字符串数组

如何判断MongoDB本机nodejs驱动程序中是否存在集合?

使用 Node-sass 缩小 CSS