如何轻松验证安装正确的npm依赖项?

mmo*_*cny 7 node.js npm

npm install如果有任何未满足的package.json依赖项,我怎么知道何时提示用户运行?

我想这样做,因为如果任何require()失败,用户会得到一个糟糕的错误消息:

module.js:340
    throw err;
          ^
Error: Cannot find module 'nopt'
Run Code Online (Sandbox Code Playgroud)

我之前试图检查node_modules目录是否存在,但这只适用于新的git克隆.我也尝试过只需要npm和运行npm install作为负载的一部分,但这是非常重的.

我希望有一个较轻的重量库,只需解析package.json并确保node_modules内容满足要求.

一个想法是使用process.on('uncaughtException')仅捕获模块导入错误,但首先查看是否存在"标准"解决方案.

bku*_*era 7

你可以使用yarn和做yarn check --verify-tree(你可以继续使用npm其他所有东西)


小智 5

今天发现了这个。不确定你是否还需要这个。

https://www.npmjs.com/package/check-dependencies

npm install check-dependencies --save-dev
Run Code Online (Sandbox Code Playgroud)

安装这个包并保存到你的 package.json。

require('check-dependencies')(config, callback);
Run Code Online (Sandbox Code Playgroud)

config 是以下对象,然后将其传递给回调。

{
    status: number,      // 0 if successful, 1 otherwise
    depsWereOk: boolean, // true if dependencies were already satisfied
    log: array,          // array of logged messages
    error: array,        // array of logged errors
}
Run Code Online (Sandbox Code Playgroud)


Dyl*_*lan 5

npm ls从项目文件夹运行时将报告丢失的包。

npm-ls 文档

不过,如果您使用 git 依赖项,这可能会出现问题。(谢谢@gman)。