离线使用 npm 插件

最近项目编译使用到 gulp ,但是编译服务器无法链接外网。npm 还好说,直接官网下载个二进制包解压可用,但是 gulp 却让我纠结了很久。网上找的很多教程,包括官方文档,都没有离线安装或手动安装 gulp 的教程,都是建议使用 npm -g install gulp 可是服务器没网络啊,咋办?

后来研究了许久,发现 npm 命令其实也就是 ../lib/node_modules/npm/bin/npm-cli.js 的一个软连接。那是否在其他主机上下载的 npm 组件,也可以直接用 js 文件的方式执行呢。

我在一台已经使用 npm 下载了 gulp 的主机上,使用 node_modules/gulp/bin/gulp.js 执行 gulp 命令,效果其实是一模一样的。后来我在一台编译时加入 gulp 的机器上看,其实 gulp 命令也无非是 gulp.js 的软连接,所以执行效果是一样的。

进而可以发现,大部分 npm 插件,都可以使用 node_modules/plugin/bin/plugin.js 的方式执行,若遇到无法上网的主机需要使用 npm 插件,只需要将已安装插件主机的 node_modules 目录拷过去就可以直接用了。