【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分

这篇具有很好参考价值的文章主要介绍了【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

😁 作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏:NodeJs
👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气

​🔥​前言:

本文是关于Node命令中的npm link命令的详细使用,还有脚手架的背后原理,如果我们需要开发命令行工具或者脚手架时,npm link的使用是必不可少的一环,有关环境变量部分大家一定要好好理解,希望可以帮助到大家,欢迎大家的补充和纠正

Node命令

1.CLI全局命令

当我们安装一个npm包之后,我们可以再电脑的任意终端使用这个npm包提供的指令,例如:当我们安装了nest npm install -g @nestjs/cli ,我们就可以在任意地方使用nest这个指令,例如:

nest new my-nest-project ,就会帮我们创建一个名字叫 my-nest-project的nest项目,这是怎么做到的呢?

1.1 环境变量

我们做格知识准备,先了解一下什么是环境变量。

环境变量就是Window一个命令执行路径:

echo %PATH%

C:\Program Files\Java\jdk1.8.0_261\bin;C:\Program Files\Git\bin;C:\Windows\System32;...

上面打印出来的就是环境变量,其中有我们熟悉的java文件执行,Git指令等,当我们在终端执行某一个指令时,其会在这些路径下面寻找是否有对应的可执行文件。有就会执行,没有就报错(错误信息:不是内部或外部命令,也不是可运行的程序或批处理文件)

1.2 npm安装全局指令流程

我们在执行npm install -g @nestjs/cli之后,就可以启动nest全局命令,这是因为在环境变量的路径下创建创建了一个nest文件

//可以使用下面这个命令查询Node全局安装指令的位置。
//注意输出的位置,这个位置很重要,下文会经常用到
npm bin -g
// C:\Users\AppData\Roaming\npm

在这个输出的路劲下,可以看到nest文件

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

这个文件会中有指向具体执行的npm包的位置:/node_modules/@nestjs/cli/bin/nest.js

所以总的执行流程可以感觉到:

输入一个nest指令 -> 在环境变量中寻找 ->找到nest可执行文件 ->执行/node_modules/@nestjs/cli/bin/nest.js 文件

3.package.json里的bin字段

我们来看nestjs包中的package.json,可以发现一个重点:

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

我们可以注意到与上面指令真正执行的文件是一致的,所以最终执行的是bin/nest.js

2.npm link

上面说的是全局安装包的模式,那如果是还在本地开发的包呢,我们不能每改一点东西就发到线上,然后安装下来再验证吧,这时候就需要使用npm link了

我们使用npm link主要分为两种功能:

  • 一个是这个npm包需要被其他的包引用
  • 一个是这个npm包作为命令行工具直接再终端用指令执行

2.1作为npm包被其他包引用

场景:假设我们有两个包,分别是a和b,b是我们本地在开发的调试包,a是我们的项目,a需要引用到b

这个场景我们分为两步来实现:

  • 在b中使用npm link
  • 在a中使用这个b包
在开发调试的包中执行npm link

我们在b的目录下执行npm link,这个时候会发现在C:\Users\AppData\Roaming\npm\node_modules目录下会生成一个链接文件,名字就是package.json中的name

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

在项目中执行npm link

当我们在b中执行npm link之后,已经在全局npm包中生成了一个目录,所以我们可以在开发项目的a包中安装b,只要在a包中执行npm link b

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

这时候我们就在a项目中使用require('b')的时候,会通过项目下的node_module找到b,而这个b文件可以注意到后面的一个箭头,表示这个b文件会引用到实际的b中,有点像网页中的链接一样的感觉

我们现在可以来理一下流程:
😄 总结:当我们在a中执行npm link b命令的时候,系统会去 C:\Users\AppData\Roaming\npm\node_modules 这个目录下寻找有没有b文件(或者链接文件),那么刚好我们在b目录下执行的npm link时会在上面的路径中生成b的链接文件,所以这个命令执行的关系时:a/node_module/b -> C:\Users\AppData\Roaming\npm\node_modules/b -> 真正的b文件

2.2 作为命令行工具需要直接在终端调用

这种功能的实现,一般来说都是命令行工具,脚手架之类的,可以直接在终端输入指令来执行项目主文件,就像nest.js一样,在终端输入nest就会执行nest脚手架项目中的主文件来生成项目框架

我们在a文件中输入node link 会在C:\Users\AppData\Roaming\npm\node_modules 路径下生成a文件的链接,而且还会在外一层的目录生成指令文件 例如:

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

上面中可以看到,执行npm link命令之后,在package.json中的bin对象下的"a-cmd": "./index.js" 键值被使用,之后我们可以在命令行使用a-cmd命令,而这个命令会去执行index.js文件。

我们接下来看 C:\Users\AppData\Roaming\npm中是什么样子:

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言

从上图可以看到终端中有了像nest指令一样的a-cmd指令,当在终端输入该执行后,会执行index.js文件

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分,Node.js,javascript,node.js,npm,开发语言
成功输出语句

最后

🌼建议: 本文的要结合实操性去理解,希望大家自己手动操作一遍哪些npm link知识点,相信你会收获更多的

😁 笔者会继续更新前端的知识,目前已有两个大专栏,如果感兴趣,不妨关注一下吧!谢谢 ! 🌱文章来源地址https://www.toymoban.com/news/detail-792769.html

  • JavaScript小贴士:有关javaScritp中的小的知识点,有点像知识碎片
  • JavaScript进阶指南 :里面是javaScritp中的一个大知识点,例如:原型,this指向,模块,各种类型知识扩展等。

到了这里,关于【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

    遇到问题:用npm下载组件时出现 Cannot find module ‘D:softwarenode_modulesnpmbinnpm-cli.js’ 问题,导致下载组件不能完成。 解决方法:下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题: 我们找到提示路径去看发现,在node_modules下没有npm目录 可以看到,存

    2024年02月12日
    浏览(96)
  • windows系统安装指定的vue/cli、node和npm;vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题

    记录vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题 先说依赖版本: vue/cli 3.12.0 node14.21.3 npm6.14.18 注意: node和npm需要版本匹配 ,也就是下载node安装包,就会自带安装npm,不可制定升级某个版本npm; 否则会导致 脚手架创建项目失败 和 vue项目启动失败 和 npm下

    2024年02月15日
    浏览(102)
  • 大数据Vue项目必备|Window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

    如果已经安装了node,那么需要先卸载node,如果没有安装那可以直接跳过这一步。 卸载: 打开控制面板 - 打开程序和功能 - 右上角搜索输入node - 右键卸载 为了确保彻底删除node在看看你的node安装目录中还有没有node文件夹,有的话一起删除。再看看C:Users用户名 文件夹下有没

    2024年02月04日
    浏览(67)
  • 使用npm install -g @vue/cli 命令安装最新的脚手架与Vue版本不匹配的问题

    使用npm install -g @vue/cli 命令安装最新的脚手架 创建项目时不要选择Vue版本,让它默认选择(默认选择 Vue2)否则会出现 vue版本和脚手架版本vue-cli 不兼容的问题(怪哉) 脚手架兼容vue2 不兼容vue3 ? 不理解,记录一下,后续整理 Vue-cli版本 vue 版本 创建项目时 ,选择默认不要

    2024年02月12日
    浏览(68)
  • 解决使用npm出现Error: Cannot find module ‘C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.jsprefix‘报错

    在我设置公司镜像源的时候遇到以下报错:Error: Cannot find module \\\'C:Program Filesnodejsnode_modulesnpmbinnpm-cli.jsprefix\\\',导致切换失败   分析问题:可以看到,报错的内容如下:  1、可以看到,问题的症结在于,无法找到npm-cli.js文件 2、既然无法找到,那么指定就是在安装目录下面

    2024年02月11日
    浏览(87)
  • Windows环境下NVM安装后Node/NPM命令无法使用

    问题:Windows环境下安装nvm后,无法使用nvm安装nodejs 官网下载nvm安装包,Releases · coreybutler/nvm-windows (github.com) 点击exe安装包,将目录修改为非系统盘(C)例如:D:SoftWorknvm,同时nodejs的安装目录选择和nvm同目录下例如:D:SoftWorknodejs 在Windows图标右键找到终端Windows PowerShell管

    2024年02月06日
    浏览(68)
  • 2021-09-16 npm install @vue/cli 卡在了 reify:rxjs: timing reifyNode: node_modules/@vue/cli/node_modules

    ​随后产生报错 查了一堆东西,后来发现其主要原因在于npm镜像源的问题。安装完nodejs之后默认镜像源为 淘宝镜像源 使用npm命令或者nrm命令切换镜像源至npm官方镜像源即可 注:本人长期科学上网因此npm官方源速度和淘宝基本没差,如果没有科学上网手段的朋友可能需要另想

    2024年02月11日
    浏览(67)
  • 【npm】常用的NPM命令及在开发过程中的应用

    NPM(Node Package Manager)是JavaScript的包管理工具,也是世界上最大的软件注册表。它允许开发者共享和重用代码,并便于管理各种Node.js的包依赖。本文将介绍一些常用的NPM命令,并探讨它们在不同开发场景中的具体应用。 npm init 和 npm init -y 当开始一个新项目时,我们通常首先

    2024年04月22日
    浏览(42)
  • reify:rxjs: timing reifyNode:node_modules/@vue/cli/node_modules——————npm run dev报错-npm初始化错误

    金钱不够,全靠技术 原因是网络问题 2种解决方法 重新输入,多试几次就好了 可以尝试换个镜像 如果是淘宝镜像,建议前者,其他镜像的可以试试换换 如果还不行试试,官方镜像 当时的效果图以后再补上 效 果 图 下回补上效果图 尝试换个新文件夹试试,作者换个文件夹就

    2024年02月16日
    浏览(73)
  • swc-loader Segmentation fault “$NODE_EXE“ “$NPM_CLI_JS“ “$@“

    webpack + swc swc还不是很稳定。 在swcrc 中有配置plugins 时,swc 转换 /node_modules/ 会报错。 @swc/cor@1.3.62 swc-loader@0.2.3 swc-plugin-vue-jsx@0.2.5 配两套rule,一套处理项目代码,一套处理node_modules webpack.config.js swcrc mode: entry 稳定一点。用usage会出问题。 果然是experimental.plugin, 实验性featur

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包