详解离线安装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实现列表自动循环滚动鼠标悬停时停止滚动
Sep 06 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
javascript排序函数实现数字排序
Jun 26 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
Express本地测试HTTPS的示例代码
Jun 06 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
vue单页应用的内存泄露定位和修复问题小结
Aug 02 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 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
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
javascript中的几个运算符
2007/06/29 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
微信小程序 选项卡的简单实例
2017/05/24 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
小学综合实践活动总结
2014/07/07 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
讲座新闻稿
2015/07/18 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle