之前开发了一个npm的包。在实际应用中发现了一个问题。如果你想要直接执行这个包的命令,那么你就需要全局安装这个包。如果你只是局部安装,且没有在package.json文件中配置的话,就会提示该命令无法找到。这是为什么呢?今天就来为大家介绍一下全局安装和局部安装到底是做了什么,

全局安装

安装位置

全局安装是将npm包安装在你的node安装目录下的node_modules文件夹中。在windows和mac中,全局安装的默认路径是不同的。在mac中默认是安装到/usr/locla/lib中。当然你也可以通过一下命令来查看全局安装路径。

// 查看全局安装路径
npm root -g// 查看npm的基础设置
npm config ls// 查看安装目录路径
npm config get prefix
复制代码

如果是公共电脑你不想将npm包安装在默认目录下,那么你可以通过命令来修改安装路径。

// 修改安装目录路径
npm config set ''
复制代码

如果在全局安装中遇到权限问题报错,你需要修改文件夹的权限,执行一下命令。

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
复制代码

全局命令

npm包在全局安装之后,这个包的命令就会被注册到全局,你就可以直接在命令行中执行这个命令了。其实当你全局安装一个npm包之后,这个包被存放在/usr/locla/lib/node_modules下。而在这个包的package.json文件中,在bin属性下配置的执行命令,会放在/usr/locla/bin文件中。当你在命令行执行这个命令,系统就会执行/usr/locla/bin目录下对应的文件。

安装过程

以全局安装vue-cli为例,为大家简述一下安装过程。

  1. npm install -g @vue/cli 安装vue包到/usr/locla/lib/node_modules

2. 查找vue包的package.json中的bin属性。3. 将vue命令的执行文件添加到/usr/locla/bin中。4. 在命令行中执行vue create vue-test,命令被识别。

本地安装

安装位置

在特定项目中执行npm install xxx,那么这个包会被安装在这个项目的node_moduels目录下。但是如果你在这个项目中直接执行包中的命令,就会发现控制台报错,告诉你这个命令找不到。这时候有两个解决方法:

  1. 使用npx执行:npx出现主要解决的问题就是调用项目内部安装的模块,所以你可以在项目中执行npx 包命令
  2. 在package.json文件中配置:
"scripts": {"包命令": "包命令",
}
复制代码

原理: 在本地安装一个包之后,这个包的命令会被添加到项目的node_modules/.bin文件中。执行npm run 命令,package.json中的scripts会按照一定顺序寻找对应命令的位置,本地的node_modules/.bin也在寻找的清单中。所以本地安装的包的命令可以执行。

转载于:https://juejin.im/post/5ccf9dc0f265da03914d7524

npm包全局安装和局部安装,执行包命令有什么不同?相关推荐

  1. 安装perf后,执行perf命令报错。

    系统版本: deepin 下安装perf 按道理来说,咱们通过apt install 安装好之后是可以直接运行perf 命令了,但是.... deepin 安装perf 后,执行perf命令报错: 此 ...

  2. 安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令

    安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令 问题原因:这是由于系统没有安装gcc环境,因此在进行编译时才会出现上面提示,当安装好gcc后 ...

  3. 一、webpack的全局安装和局部安装以及使用

    1.webpack的使用前提 webpack的运行环境是依赖Node环境的,所以电脑上必须有node.安装node 14.15.5版本,npm 6.14.11版本 2.webpack和webpack- ...

  4. 依赖包 全局_composer 更新指定的依赖包

    php中文网最新课程 每日17点准时技术干货分享 composer更新指定的依赖包 compoesr 的require/update都可以更新指定的依赖包(升级/降级). require更为灵活些,未 ...

  5. 如何检查python的库是否安装成功_Python——查看安装位置和安装的库

    查看Python 安装位置和安装的库 步骤一: 1. Start 一个command prompt 2. 找到电脑中已经安装的Python 位置: where python 1 打开路径, cd 到输 ...

  6. RHEL6入门系列之二十七,源码安装及软件安装综合实例

    本篇博文中用到的所有软件和工具都可以从51cto下载,地址:http://down.51cto.com/data/676524 一. 源代码安装软件 1.源代码编译概述 虽然通过RPM软件包大大简化了 ...

  7. mysql 5.x数据库安装_手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug

    前言 Hey,大家好,我是码农星期八,似乎还没有更新过关于Mysql的相关文章,同时也是因为工作需要,一起来学学叭. 数据库种类 常见的数据库有Mysql,Oracle,SQLite,Access,M ...

  8. centos安装mysql8_Docker 快速安装 Mysql

    本篇文章主要记录 Docker 安装 Mysql 的命令和过程.在开始之前,你需要在电脑上安装 Docker 环境,可参考 在 CentOS 系统上安装 Docker Engine 在 Ubuntu ...

  9. centos安装mysql_centos如何安装mysql

    centos如何安装mysql? CentOS中安装MySQL步骤详解 本文中Linux环境为CentOS 6.4 32位,且安装选择的是Basic Server版. 在有些Linux版本中会自带有M ...

最新文章

  1. vue.js 第四课
  2. 独家 | 在树莓派+Movidius NCS上运用YOLO和Tiny-YOLO完成目标检测(附代码下载)
  3. 每日一皮:程序员职业服装!
  4. 罗辑思维年终4小时演讲《时间的朋友》1000字浓缩版
  5. 案例丨神策数据赋能物流服务行业数字化转型
  6. Asp.net HttpClient Proxy(Fiddler)
  7. xfce4自己使用的主题设置备份以及xfce4默认的壁纸路径
  8. python gevent async_python的异步初体验(gevent、async、await)
  9. MySQL 亿级数据需求的优化思路(二),100亿数据,1万字段属性的秒级检索
  10. T-SQL像数组一样处理字符串、分割字符串,遍历数组
  11. 物体检测的过去、现在和未来
  12. AndroidStudio_安卓原生开发_什么是AndroidStudio NDK ---Android原生开发工作笔记140
  13. hdu2063+hdu1083(最大匹配数)
  14. PHP unicode与普通字符串的相互转化
  15. error: dst ref refs/heads/zhCN_v0.13.1 receives from more than one src.
  16. 修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)...
  17. 【windows】win10录屏录屏内声音
  18. python爬虫二十三:使用fiddler抓取app数据(三)
  19. 2021-08-18-ideal配置github时报:insufficient scopes granted to the token
  20. warning: array subscript has type ‘char‘

热门文章

  1. Apache Kafka-消费端_批量消费消息的核心参数及功能实现
  2. Linux 让进程在后台可靠运行的几种方法
  3. C++五子棋(一)——开发环境
  4. 微积分笔记(一)--预备知识
  5. 学习笔记Kafka(二)—— Kafka安装配置(1)—— JDKZookeeper安装、Zookeeper 常用操作
  6. python 从尾到头打印链表
  7. 河南测绘职业学院招生计算机,河南测绘职业学院代码
  8. php ajax 时间戳,获取时间戳 和 备用ajax案例
  9. php每天扒取当天新闻_php 抓取新浪新闻的程序代码
  10. mac php7 mysql.so_mac下安装php7详解