npm包全局安装和局部安装,执行包命令有什么不同?
之前开发了一个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为例,为大家简述一下安装过程。
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
目录下。但是如果你在这个项目中直接执行包中的命令,就会发现控制台报错,告诉你这个命令找不到。这时候有两个解决方法:
- 使用npx执行:npx出现主要解决的问题就是调用项目内部安装的模块,所以你可以在项目中执行
npx 包命令
。 - 在package.json文件中配置:
"scripts": {"包命令": "包命令",
}
复制代码
原理: 在本地安装一个包之后,这个包的命令会被添加到项目的node_modules/.bin
文件中。执行npm run 命令
,package.json中的scripts会按照一定顺序寻找对应命令的位置,本地的node_modules/.bin
也在寻找的清单中。所以本地安装的包的命令可以执行。
转载于:https://juejin.im/post/5ccf9dc0f265da03914d7524
npm包全局安装和局部安装,执行包命令有什么不同?相关推荐
- 安装perf后,执行perf命令报错。
系统版本: deepin 下安装perf 按道理来说,咱们通过apt install 安装好之后是可以直接运行perf 命令了,但是.... deepin 安装perf 后,执行perf命令报错: 此 ...
- 安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令
安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令 问题原因:这是由于系统没有安装gcc环境,因此在进行编译时才会出现上面提示,当安装好gcc后 ...
- 一、webpack的全局安装和局部安装以及使用
1.webpack的使用前提 webpack的运行环境是依赖Node环境的,所以电脑上必须有node.安装node 14.15.5版本,npm 6.14.11版本 2.webpack和webpack- ...
- 依赖包 全局_composer 更新指定的依赖包
php中文网最新课程 每日17点准时技术干货分享 composer更新指定的依赖包 compoesr 的require/update都可以更新指定的依赖包(升级/降级). require更为灵活些,未 ...
- 如何检查python的库是否安装成功_Python——查看安装位置和安装的库
查看Python 安装位置和安装的库 步骤一: 1. Start 一个command prompt 2. 找到电脑中已经安装的Python 位置: where python 1 打开路径, cd 到输 ...
- RHEL6入门系列之二十七,源码安装及软件安装综合实例
本篇博文中用到的所有软件和工具都可以从51cto下载,地址:http://down.51cto.com/data/676524 一. 源代码安装软件 1.源代码编译概述 虽然通过RPM软件包大大简化了 ...
- mysql 5.x数据库安装_手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug
前言 Hey,大家好,我是码农星期八,似乎还没有更新过关于Mysql的相关文章,同时也是因为工作需要,一起来学学叭. 数据库种类 常见的数据库有Mysql,Oracle,SQLite,Access,M ...
- centos安装mysql8_Docker 快速安装 Mysql
本篇文章主要记录 Docker 安装 Mysql 的命令和过程.在开始之前,你需要在电脑上安装 Docker 环境,可参考 在 CentOS 系统上安装 Docker Engine 在 Ubuntu ...
- centos安装mysql_centos如何安装mysql
centos如何安装mysql? CentOS中安装MySQL步骤详解 本文中Linux环境为CentOS 6.4 32位,且安装选择的是Basic Server版. 在有些Linux版本中会自带有M ...
最新文章
- vue.js 第四课
- 独家 | 在树莓派+Movidius NCS上运用YOLO和Tiny-YOLO完成目标检测(附代码下载)
- 每日一皮:程序员职业服装!
- 罗辑思维年终4小时演讲《时间的朋友》1000字浓缩版
- 案例丨神策数据赋能物流服务行业数字化转型
- Asp.net HttpClient Proxy(Fiddler)
- xfce4自己使用的主题设置备份以及xfce4默认的壁纸路径
- python gevent async_python的异步初体验(gevent、async、await)
- MySQL 亿级数据需求的优化思路(二),100亿数据,1万字段属性的秒级检索
- T-SQL像数组一样处理字符串、分割字符串,遍历数组
- 物体检测的过去、现在和未来
- AndroidStudio_安卓原生开发_什么是AndroidStudio NDK ---Android原生开发工作笔记140
- hdu2063+hdu1083(最大匹配数)
- PHP unicode与普通字符串的相互转化
- error: dst ref refs/heads/zhCN_v0.13.1 receives from more than one src.
- 修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)...
- 【windows】win10录屏录屏内声音
- python爬虫二十三:使用fiddler抓取app数据(三)
- 2021-08-18-ideal配置github时报:insufficient scopes granted to the token
- warning: array subscript has type ‘char‘
热门文章
- Apache Kafka-消费端_批量消费消息的核心参数及功能实现
- Linux 让进程在后台可靠运行的几种方法
- C++五子棋(一)——开发环境
- 微积分笔记(一)--预备知识
- 学习笔记Kafka(二)—— Kafka安装配置(1)—— JDKZookeeper安装、Zookeeper 常用操作
- python 从尾到头打印链表
- 河南测绘职业学院招生计算机,河南测绘职业学院代码
- php ajax 时间戳,获取时间戳 和 备用ajax案例
- php每天扒取当天新闻_php 抓取新浪新闻的程序代码
- mac php7 mysql.so_mac下安装php7详解