详解离线安装npm包的几种方法


Posted in Javascript onNovember 25, 2018

这段时间的工作主题就是Linux

下的“离线部署”,包括mongo、mysql、postgresql、nodejs、nginx等软件的离线部署。平常在服务器上借助apt-get就能轻松搞定的事情,在离线环境下就变得异常艰难。上一篇文章讲了使用snap离线安装软件的方式,但对于npm包怎么离线部署,snap是无能为力的。本篇文章就来讲一讲离线安装npm包的几种方法。

接下来的部分,我将以离线安装pm2为例来进行说明。pm2是一个进程守护程序,用于启动node集群和服务进程出错时自动重启,在生产环境下部署nodejs应用一般都会使用到。

使用 npm link

使用 npm link 的方式是最常用的方法,具体做法是在联网机器上下载pm2的源码并安装好依赖,拷贝到离线服务器上,最后借助 npm link 将pm2链接到全局区域。

首先,将pm2的源代码克隆下来:

$ git clone https://github.com/Unitech/pm2.git

然后进入到pm2项目中,安装好所有的依赖:

$ cd pm2
$ npm install

将安装好依赖的pm2文件夹拷贝到目标服务器上,进入pm2目录链接到全局区域:

$ cd pm2
$ npm link

这种方式最关键的是借助 npm link 完成链接,但 npm link 这条命令本意是设计给开发人员调试用的。但开发人员开发某个全局命令工具的时候,通过将命令从本地工程目录链接到全局,这样调试的时候,可以实时查看本地代码在全局环境下的执行情况。所以, npm link 的项目需要安装所有的依赖,包括 dependencies 以及 devDependencies ,而我们如果只是使用而不是开发某个包的话,正常情况下不应该安装 devDependencies 。

总而言之,这种方式优点是比较简单,缺点是安装了不需要的 devDependencies ,对于有“洁癖”的人是难以忍受的。

使用 npm install <folder>

那有什么方法相比于上一种方法更干净呢?答案是 npm install <folder> 直接从文件夹安装。

同样以pm2为例,首先我们需要准备pm2包,可以在联网的机器上执行:

$ npm install pm2 --global-style

上面的 --global-style 很关键,表示将pm2安装到node_modules中一个单独的pm2文件夹中,这样我们可以方便地将pm2及其所有相关依赖都拷贝出来。也可以使用 npm install pm2 -g 安装到全局的node_modules,其文件布局是一样。

然后,将pm2文件拷贝到目标机器上,使用以下命令安装:

$ npm install pm2/ -g

这种方式不需要安装多余的 devDependencies ,并且不需要克隆pm2的源码,比第一种方法更干净环保。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery代码优化 遍历篇
Nov 01 Javascript
jquery表单验证插件formValidator使用方法
Apr 01 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
Apr 11 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
解决Angular4项目部署到服务器上刷新404的问题
Aug 31 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 Javascript
vue子路由跳转实现tab选项卡
Jul 24 Javascript
swiper实现异形轮播效果
Nov 28 Javascript
使用JS来动态操作css的几种方法
Dec 18 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 #Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 #Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
Nov 25 #Javascript
详解Vue CLI 3.0脚手架如何mock数据
Nov 23 #Javascript
详解js静态检查工具eslint配置文件
Nov 23 #Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 #Javascript
创建echart多个联动的示例代码
Nov 23 #Javascript
You might like
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
总结对比php中的多种序列化
2016/08/28 PHP
JavaScript创建对象的写法
2013/08/29 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JavaScript 基本概念
2015/01/20 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python函数返回值实例分析
2015/06/08 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python中zip函数如何使用
2020/06/04 Python
提高python代码运行效率的一些建议
2020/09/29 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
群众路线教育实践活动方案
2014/02/02 职场文书
教育学习自我评价
2014/02/03 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
民主评议党员总结
2014/10/20 职场文书
党员作风建设整改方案
2014/10/27 职场文书
职代会闭幕词
2015/01/28 职场文书
公司行政管理制度范本
2015/08/05 职场文书
军训决心书范文
2015/09/22 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
代码复现python目标检测yolo3详解预测
2022/05/06 Python