npm install 命令用于安装包,支持本地依赖(默认)、开发依赖(-d)、全局安装(-g)及精确版本锁定(@version);npm ls --depth=0 --json --silent可导出顶层依赖,配合--all和过滤逻辑可生成含devdependencies的完整安装脚本,需额外处理peerdependencies和file:路径依赖以确保离线可用。

直接生成 npm install 命令行脚本
不需要写脚本,npm ls --depth=0 --json --silent 就能输出所有顶层依赖的 name + version,再用简单 shell 或 Node.js 脚本转成 npm install pkg@version 列表。注意别漏掉 --silent,否则会混入 WARN 日志导致解析失败;--depth=0 是关键,它只取直接依赖,跳过 transitive 依赖,避免命令过长或重复安装。
导出带 --save-dev 的完整安装命令
很多插件开发依赖(如 @vscode/vsce、typescript)在 devDependencies 里,但 npm ls 默认不包含它们。必须加 --all 参数: npm ls --all --depth=0 --json --silent。之后过滤 dev 字段为 true 的项,拼出 npm install -D pkg@version。否则生成的脚本装完缺编译器或打包工具,vsce package 直接报错。
处理 peerDependencies 冲突的脚本逻辑
像 eslint 插件常声明 peerDependencies,但 npm ls 不输出它们。得手动读取 package.json 中的 peerDependencies 字段,再检查当前项目是否已满足——比如 "typescript": ">=4.5.0",就得用 semver.satisfies 校验本地 tsc -v 结果。没满足就加进脚本,补上 npm install -D typescript@latest。否则离线部署时,插件运行时报 Cannot find module 'typescript'。
生成跨平台兼容的 .sh/.bat 双格式脚本
企业内网批量部署常要兼顾 Windows 和 Linux 开发机。npm install 命令本身跨平台,但换行符和执行权限容易出问题:Linux 脚本需 #!/bin/bash 头 + chmod +x,Windows 需 .bat 后缀 + call 语法。建议用 Node.js 脚本生成两份:install-deps.sh(Unix 风格)和 install-deps.bat(Windows 风格),内容都用 npm install 命令,但 bat 文件每行加 call,避免子命令退出后中断。别直接用 os.platform() 动态判断——脚本是给人用的,不是给当前机器跑的。
file:../shared-utils)。这类路径依赖不会出现在 npm ls 输出里,必须额外扫描 package.json 的 dependencies 和 devDependencies 字段,正则匹配 file: 协议,再转换成相对路径拷贝逻辑。漏掉这个,离线环境一运行就 Module not found。











