详解离线安装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 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
js改变img标签的src属性在IE下没反应的解决方法
Jul 23 Javascript
jQuery实现数字加减效果汇总
Dec 16 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
详解JavaScript节流函数中的Throttle
Jul 16 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php类
2006/11/27 PHP
php 随机生成10位字符代码
2009/03/26 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
农历与西历对照
2006/09/06 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
Python发送email的3种方法
2015/04/28 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python3匿名函数用法示例
2018/07/25 Python
Python生成器generator用法示例
2018/08/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
python 线程的五个状态
2020/09/22 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
电子专业推荐信范文
2013/11/18 职场文书
采购员的工作职责
2013/12/26 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
企业计划生育责任书
2015/05/09 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
2015最新民情日记范文
2015/06/26 职场文书
四年级语文教学反思
2016/03/03 职场文书