npm or yarn

npm or yarn

前端包管理工具

yarn.lock / package-lock.json

yarn / npx

  • yarn 可以自动找到 node_modules/.bin 下的可执行文件,npx 也可以
    • yarn create => create-
  • npx 可以直接执行 远端(线上)模块,一次性使用

全局安装 or 本地安装

全局安装模块:只有本地经常用到,而且与某一个特定项目无关的工具或者模块

脚手架类型的工具,建议使用 npx / yarn create,一次性使用

其他所有的模块都应该安装到项目本地。也就是在 package.json 声明这个依赖,便于后期管理

很多 CLI 模块是跟着项目走的

全局安装模块 cli 找不到的问题

$ npm config get prefix # 获取 npm 全局目录
$ npm bin --global
$ yarn config get prefix
$ yarn global bin

解决办法:先找到你这个模块具体安装到哪了,然后确保这个路径出现在 PATH

执行一个命令:

  1. 先去找当前 cwd 中有没有这样一个可执行文件
  2. 如果找到了就直接执行这个文件
  3. 找不到就会读取环境变量当中的 PATH
  4. 以此去找 PATH 中配置的每一个路径
  5. 找不到报错

Windows

  • CMD:set PATH
  • PowerShell:$env: PATH
  • where xxx 找到这个命令所在的路径

Linux

  • echo $PATH
  • which xxx 找到这个命令所在的路径

yarn <cli-name> / npx <cli-name>

Node CLI 类型的模块都会提供了一个或多个 CLI 程序,所以本地安装完这些过后,在项目的 node_modules 下的 .bin 目录里就会多出一个或者多个可执行文件。后续我们可以直接通过命令去使用这个 CLI 程序。

当然了,通过前面的介绍你应该了解过,对于 node_modules 下 .bin 目录里的可执行文件,我们可以通过 npx 或者 yarn 命令快速找到,不必使用完整的路径去访问。

那如果你使用的是 yarn,你就可以直接执行 yarn <cli-name>,这样的话 yarn 会自动找到 bin 目录下的 <cli-name> 文件。

我这里使用的是 npm 工具,所以我需要使用 npx <cli-name>。注意这里是 npx 命令,而不是 npm。

npx 是 npm 最新版本中集成的一个工具,也就是说你只要安装了最新版的 npm 工具,你就可以直接使用 npx 命令。

yarn link / npm link

Node.js CLI 程序的权限问题

CLI 程序在 Linux 下要求执行入口文件必须具备执行权。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V9rux8E3-1609926751532)(media/image-20200810150505722.png)]

添加执行权的方式如下:

# cli.js 是 package.json 中 bin 字段指向的文件
$ chmod 755 cli.js
$ chmod +x cli.js

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nc2DsZ6Q-1609926751537)(media/image-20200810150617879.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mSQArS7E-1609926751539)(media/image-20200810142236901.png)]

http://c.biancheng.net/view/757.html

控制台卡死问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EXUGG7p-1609926751542)(media/42F9ADA0-8F5A-476A-AE7F-3F753788095B.png)]

只要左上角的标题栏变成选择 xxx,这个时候就像是截图一样,cmd 会停留在快照状态

npm 安装模块超时 / 连接错误

# mirror config
sharp_dist_base_url = https://npm.taobao.org/mirrors/sharp-libvips/v8.9.1/
profiler_binary_host_mirror = https://npm.taobao.org/mirrors/node-inspector/
fse_binary_host_mirror = https://npm.taobao.org/mirrors/fsevents
node_sqlite3_binary_host_mirror = https://npm.taobao.org/mirrors
sqlite3_binary_host_mirror = https://npm.taobao.org/mirrors
sqlite3_binary_site = https://npm.taobao.org/mirrors/sqlite3
sass_binary_site = https://npm.taobao.org/mirrors/node-sass
electron_mirror = https://npm.taobao.org/mirrors/electron/
puppeteer_download_host = https://npm.taobao.org/mirrors
chromedriver_cdnurl = https://npm.taobao.org/mirrors/chromedriver
operadriver_cdnurl = https://npm.taobao.org/mirrors/operadriver
phantomjs_cdnurl = https://npm.taobao.org/mirrors/phantomjs
python_mirror = https://npm.taobao.org/mirrors/python
registry = https://registry.npm.taobao.org/
disturl = https://npm.taobao.org/dist

四、补充内容

命令执行过程

不管是 Windows 还是 Linux 下,除了 echo 这样的内置命令,执行其他任何命令都是最终找到一个可执行文件去执行。

路径查找规则:

  1. 先在当前命令行所在目录(CWD)中查找
  2. 然后依次去找 PATH 变量中的每一个路径

Windows 环境变量配置

macOS 环境变量配置

.bashrc .bash_profile .zshrc

## load nvm
export NVM_DIR=$HOME/.nvm
[ -s $(brew --prefix nvm)/nvm.sh ] && . $(brew --prefix nvm)/nvm.sh
[ -s $(brew --prefix nvm)/bash_completion ] && . $(brew --prefix nvm)/bash_completion

## yarn global path
export PATH=$(yarn global bin):$PATH

## export mirrors
export NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node
# export IOJS_ORG_MIRROR=http://npm.taobao.org/mirrors/iojs
export NVM_NODEJS_ORG_MIRROR=$NODEJS_ORG_MIRROR
# export NVM_IOJS_ORG_MIRROR=$IOJS_ORG_MIRROR

开发一个 CLI 工具

  • https://github.com/zce/m2i
  • https://github.com/zce/caz

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值