如何安装需通过prepack脚本构建的Git来源npm依赖包
错误根因
npm安装Git来源依赖时,触发prepack脚本前不会自动安装目标包的devDependencies,而vscroll的构建依赖shelljs被放在了devDependencies中,因此执行构建时找不到对应模块。npm官方源上的包是预构建完成的,不需要执行构建流程,因此可以正常安装。
方案1:修改vscroll包配置(适合包维护者)
- 将package.json中的
prepack脚本替换为prepare脚本:npm执行prepare脚本前会自动安装目标包的所有依赖(包括devDependencies),再执行构建流程,完全适配Git来源依赖的安装场景,同时不会影响npm官方源的发布流程。 - 如果不想调整脚本命名,也可以将构建所需的依赖(如shelljs)从devDependencies移至dependencies,不过该方案会增加所有用户安装该包的体积,优先级低于替换脚本方案。
方案2:不修改vscroll源码(适合普通使用者)
- 在宿主项目的package.json中添加postinstall脚本,安装完所有依赖后手动处理vscroll的构建,可直接适配CI环境无需额外配置:
{ "scripts": { "postinstall": "cd node_modules/vscroll && npm install --only=dev && npm run build" } }
- 临时本地使用的话,可以手动克隆vscroll仓库到本地,执行构建完成后,通过
npm install 本地vscroll目录路径的方式安装本地预构建的包。 - 也可以fork vscroll的仓库,自行修改脚本配置后,安装自己fork后的Git地址即可,不需要发布版本到npm官方源。
内容的提问来源于stack exchange,提问作者dhilt
相关产品推荐
相关产品推荐

