@lxjwlt
2016-03-01T00:12:12.000000Z
字数 1250
阅读 4674
博文
NPM在安装的过程中会自动下载安装包的依赖文件,离线环境下由于无法下载安装包必要的依赖文件会导致安装失败。以下提供两种方式获取NPM离线包,以供离线环境安装。
使用npm提供打包功能,假设package.json文件如下:
{
"dependencies": {
"commander": "^2.8.1",
"markdown": "^0.5.0"
}
}
我们需要新增一个字段bundledDependencies
,并将依赖文件名以数组形式列出来:
{
"dependencies": {
"commander": "^2.8.1",
"markdown": "^0.5.0"
},
"bundledDependencies": ["commander", "markdown"]
}
最后用命令行工具在根目录下执行:
npm pack
目录下会生成一个后缀为.tar的压缩文件,将该文件拷贝到离线环境上解压,进入解压文件目录执行npm install
进行安装。
这种方式需要将依赖文件名一个个复制粘贴一遍,操作起来很不方便。如果需要处理大量的离线安装包,推荐用以下做法。
npmbox原名叫npmzip,用于压缩npm安装包。npmbox工具会直接在npm服务器上自动查找并下载好我们指定的安装包,并将安装包压缩成一个后缀为.npmbox的压缩文件。
首先在联网环境中全局安装npmbox工具:
npm install npmbox -g
由于npmbox工具压缩的文件也需要由npmbox工具来解压,所以离线环境上也要安装npmbox。我们在联网环境上用npmbox工具对其自身的安装包进行压缩:
npmbox npmbox
目录下生成一个新的文件“npmbox.npmbox”,将该文件拷贝到离线环境中,执行以下命令进行解压安装:
tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox
Windows系统的命令行貌似没有tar命令,建议使用第三方的命令行工具,如Git-bash
解压后得到一个缓存文件夹,不需理会继续执行以下命令全局安装npmbox(windows环境下):
npm install --global --cache .\.npmbox.cache --optional --cache-min 99999 --shrinkwrap false npmbox
如果没有报错,npmbox工具已经在离线环境中安装成功了。
接下来要获取npm离线安装包就非常简单了,比如我们想获取bootstrap离线包,只需要在联网环境下执行:
npmbox bootstrap
然后将压缩文件bootstrap.npmbox拷贝到离线环境,执行以下命令进行解压:
npmupbox bootstrap.npmbox