详解离线安装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 相关文章推荐
关于flash遮盖div浮动层的解决方法
Jul 17 Javascript
Javascript中正则表达式的全局匹配模式分析
Apr 26 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
举例讲解AngularJS中的模块
Jun 17 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
May 15 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中foreach/in_array的使用
2015/11/02 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python实现微信自动回复功能
2018/04/11 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
培训主管的职业生涯规划
2014/03/06 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
企业活动策划方案
2014/06/02 职场文书
药品营销策划方案
2014/06/15 职场文书
导游词之青城山景区
2019/09/27 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python