打印所有已安装的 node.js 模块的列表
Posted
技术标签:
【中文标题】打印所有已安装的 node.js 模块的列表【英文标题】:Print a list of all installed node.js modules 【发布时间】:2012-12-08 13:11:32 【问题描述】:在我正在处理的 node.js 脚本中,我想将所有 node.js 模块(使用 npm 安装)打印到命令行。我该怎么做?
console.log(__filename);
//now I want to print all installed modules to the command line. How can I do this?
【问题讨论】:
在这种情况下,编写一个返回 node.js 模块文件夹路径的函数(如果可能的话)可能会很有用。一个跨平台的解决方案将是理想的。 关于从目录中获取文件列表的信息:***.com/questions/2727167/… How to list npm user-installed packages?的可能重复 【参考方案1】:如果您只对全局安装的软件包感兴趣而没有完整的树,那么:
npm -g ls --depth=0
或本地(省略-g):
npm ls --depth=0
【讨论】:
我也喜欢指定 --l 或 --long,npm -g ls --depth=0 --long
。这提供了模块描述和 github 链接。
如果您喜欢 npm ls
完整示例,请查看:***.com/questions/17937960/…【参考方案2】:
使用npm ls(甚至还有json输出)
来自脚本:
test.js:
function npmls(cb)
require('child_process').exec('npm ls --json', function(err, stdout, stderr)
if (err) return cb(err)
cb(null, JSON.parse(stdout));
);
npmls(console.log);
运行:
> node test.js
null name: 'x11', version: '0.0.11'
【讨论】:
另外,如何获取modules文件夹的文件路径? 路径是 node_modules/[模块名称]。我相信这应该适用于所有平台。请注意,这种方式仅打印“本地”模块树,requre
首先查看 node_modules,然后查看 ../node_modules、../../node_modules(请参阅nodejs.org/api/…),然后查看 NODE_PATH env var
尝试npm ls --parseable
获取路径列表【参考方案3】:
所有全局安装的第三方模块列表,写入控制台:
npm -g ls
【讨论】:
【参考方案4】:在任何操作系统中
npm -g list
就是这样
【讨论】:
此命令将比npm -g ls --depth=0
花费更长的时间,因为它还会查找模块依赖项。【参考方案5】:
通常,有两种方法可以列出已安装的软件包 - 通过命令行界面 (CLI) 或在您的应用程序中使用 API。
这两个命令都会以树形结构向stdout
打印已安装包的所有版本及其依赖项。
命令行
npm list
使用-g
(全局)标志列出所有全局安装的包。使用--depth=0
标志仅列出***包而不列出它们的依赖项。
API
在您的情况下,您希望在脚本中运行它,因此您需要使用 API。来自文档:
npm.commands.ls(args, [silent,] callback)
除了打印到stdout
之外,数据也会传入回调中。
【讨论】:
感谢您指定 npm 具有可从应用程序访问的 API。你如何将参数传递给函数?我尝试了npm.commands.ls(["depth=0"], ... )
,但它给了我错误,npm.commands.ls(["prod"], ... )
给了我一个空数组....【参考方案6】:
为什么不从dependencies
中的package.json
中获取它们?
当然,这只会给你实际保存的那些,但无论如何你都应该这样做。
console.log(Object.keys(require('./package.json').dependencies));
【讨论】:
这不会给你全局安装的包 原始问题没有指定他们是否要包含全局安装的软件包。此答案为其他答案提供了一个有用的替代方案。【参考方案7】:for package in `sudo npm -g ls --depth=0 --parseable`; do
printf "$package##*/\n";
done
【讨论】:
是的,我现在所有的 Bash 都有$()
【参考方案8】:
截至 2021 年底,几乎没有什么明显的方法可以做到这一点,而上面的答案中唯一给出的部分是完整的列表。
Node.js 文档实际上对此事进行了很好的解释,这是主要命令的集体列表。
所有命令都将运行已安装模块的列表本地。为了运行全局级别只需在语句末尾添加-g
标志。
查看所有已安装 npm 包的版本,包括它们的依赖项。
❯ npm list
>>> /Users/joe/dev/node/cowsay
└─┬ cowsay@1.3.1
├── get-stdin@5.0.1
├─┬ optimist@0.6.1
│ ├── minimist@0.0.10
│ └── wordwrap@0.0.3
├─┬ string-width@2.1.1
│ ├── is-fullwidth-code-point@2.0.0
│ └─┬ strip-ansi@4.0.0
│ └── ansi-regex@3.0.0
└── strip-eof@1.0.0
只获取您的***包
npm list --depth=0
通过指定名称获取特定包的版本。
npm list <package-name>
在 npm 存储库中查看该软件包的最新可用版本
npm view <package-name> version
使用@语法安装旧版本的 npm 包
npm 安装@ npm install cowsay@1.2.0
全局包
npm install -g webpack@4.16.4
列出软件包的所有先前版本
npm view cowsay versions
[ '1.0.0',
'1.0.1',
'1.0.2',
'1.0.3',
'1.1.0',
'1.1.1',
'1.1.2',
'1.1.3',
....
]
更新所有 Node.js 依赖项
安装新的次要版本或补丁版本
npm update
安装新的次要版本或补丁版本但不更新 package.json
npm update --no-save
为了发现软件包的新版本,这会为您提供一个存储库中的一些过时软件包的列表,这些软件包已经有一段时间没有更新了
npm outdated
其中一些更新是主要版本。运行 npm update 不会更新这些版本。主要版本永远不会以这种方式更新,因为它们(根据定义)引入了重大更改,而 npm 想为您省去麻烦。
要将所有包更新到新的主要版本,请全局安装 npm-check-updates 包:
npm install -g npm-check-updates
ncu -u
这会将 package.json 文件中的所有版本提示升级为依赖项和 devDependencies,因此 npm 可以安装新的主要版本
开发依赖
安装在开发依赖项中。
npm install <package-name> -D
npm install <package-name> --save-dev # same as above
避免在生产环境中安装这些开发依赖项
npm install --production
卸载 npm 包
npm uninstall <package-name>
npm uninstall -g <package-name> # globally uninstall
卸载一个包并**删除package.json中的引用**
npm uninstall <package-name> -S
npm uninstall <package-name> --save # same as above
一些带有全局标志的命令示例。
npm list -g
npm list --depth=0 -g
npm list <package-name> -g
npm view <package-name> version -g
附加命令
Answer by @prosti文档
Find the installed version of an npm package Install an older version of an npm package Update all the Node.js dependencies to their latest version Semantic Versioning using npm Uninstalling npm packages npm global or local packages npm dependencies and devDependencies The npx Node.js Package RunnerTABLE OF CONTENTS【讨论】:
以上是关于打印所有已安装的 node.js 模块的列表的主要内容,如果未能解决你的问题,请参考以下文章