npm包-命令

Tips:

本文中“npm包”指的npm安装的包。

本文通过分析内在逻辑,能够清楚解释全局安装包为什么会产生全局命令,局部安装包为什么可以通过npm run 执行

先上结论:

  • 全局npm包,直接在命令行执行
  • 局部npm包的命令,结合scripts属性npm run [script命令],执行;或者使用npx [命令]

分析

首先,明确一点,一个包暴露出去的命令是写在这个包的package.json文件的bin属性中的

bin属性用来指定各个内部命令对应的可执行文件的位置

e.g. yarn包的package.json文件
在这里插入图片描述
然后,明确安装位置

  • 全局安装:安装包放在 /usr/local 或者 node 的安装目录的node_modules文件夹下
  • 局部安装:执行命令时所在目录的node_modules文件夹下【一般在某个项目下执行局部安装命令】

最后,bin属性配置的命令,

  • 全局安装:会放在npm包所在node_modules目录的父目录中,也即 /usr/local 或者 node 的安装目录
    1. /usr/local 一般会设置为环境变量path的一个值
    2. node的安装目录在安装之后,也会设置为环境变量path的一个值
      因此,全局安装,bin属性配置的命令,是可以直接在命令行执行的,是全局命令
  • 局部安装:放在所在node_modules文件夹的.bin文件夹中
    1. npm运行时,node_modules/.bin/目录会加入系统的PATH变量。因此在运行npm时,就可以不带路径,直接通过命令来调用这些脚本
      e.g. 在webStorm的命令行,可以直接运行.bin中的命令

我猜想,在webStorm的命令行中,执行命令时,npm是运行的;而一般的命令行工具,比如cmd中,没有这个特性,所以在cmd中不能直接运行这些命令
在这里插入图片描述在这里插入图片描述
对于一般的命令行中不能直接运行包命令的问题,可以通过npx解决:
在这里插入图片描述
npx出现主要解决的问题就是调用项目内部安装的模块,所以你可以在项目中执行npx 包命令。

  1. 执行npm run 命令时,package.json中的scripts会按照一定顺序寻找对应命令的位置,本地的node_modules/.bin也在寻找的清单中。所以本地安装的包的命令也可以执行

补充

  1. 随node安装的npm【npm也是全局命令】
    在这里插入图片描述
    在这里插入图片描述
  2. npm全局安装包
    在这里插入图片描述
    在这里插入图片描述
  3. npm局部安装包 【一般在某个项目下进行安装】
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值