当前位置: 首页 > wzjs >正文

重庆网站优化软件文字转链接网址

重庆网站优化软件,文字转链接网址,商城网站建设的注意事项,重庆制片公司文章目录 前言原理解析1. npx 的作用2. 为什么会有 node_modules/.bin/lerna3. npx 的查找顺序4. 执行流程总结1: 1. .bin 机制什么是 node_modules/.bin?例子 2. npx 的底层实现npx 是如何工作的?为什么推荐用 npx?npx 的特殊能力…

文章目录

  • 前言
      • 原理解析
      • 1. npx 的作用
      • 2. 为什么会有 `node_modules/.bin/lerna`
      • 3. npx 的查找顺序
      • 4. 执行流程
      • 总结1:
    • 1. `.bin` 机制
      • 什么是 `node_modules/.bin`?
      • 例子
    • 2. npx 的底层实现
      • npx 是如何工作的?
      • 为什么推荐用 npx?
      • npx 的特殊能力
    • 3. yarn 的机制
    • 总结2:
  • `.bin` 目录的实际内容
      • 1. `.bin` 目录的作用
      • 2. 实际内容举例
      • 3. 如何查看 .bin 目录内容
      • 4. 这些文件的作用
      • 5. 关联知识


前言

在终端执行 lerna run build 时出现了 bash: lerna: command not found 的错误。这说明当前环境下找不到 lerna 命令

那么 npx lerna run build 为什么会自动使用本地 node_modules/.bin 下的 lerna,以及其原理。


原理解析

1. npx 的作用

  • npx 是 Node.js 附带的一个命令行工具(npm 5.2+),用于临时调用项目依赖中的可执行文件(bin)。
  • 当你在项目根目录下运行 npx lerna run build 时,npx 会优先在当前项目的 node_modules/.bin 目录下查找 lerna 可执行文件。

2. 为什么会有 node_modules/.bin/lerna

  • 当你在项目的 package.json 里声明了 lerna 作为 devDependencies,并执行过 npm installyarn install 后,lerna 的可执行文件就会被自动放到 node_modules/.bin/lerna
  • 这个 .bin 目录是 npm/yarn 的标准机制,用于存放所有依赖包的命令行工具。

3. npx 的查找顺序

  • npx 会先查找本地 node_modules/.bin,如果找不到才会去全局环境查找。
  • 这样可以确保你用到的是当前项目依赖的 lerna 版本,而不是全局安装的版本,保证了版本一致性和可移植性。

4. 执行流程

  1. 你输入 npx lerna run build
  2. npx 查找 node_modules/.bin/lerna
  3. 找到后,直接调用这个本地的 lerna 执行 run build 命令
  4. lerna 会根据你的 monorepo 配置,依次在各个包下执行 build 脚本

总结1:

  • npx 让你无需全局安装 lerna,也不用关心 PATH 配置,直接用本地依赖的 lerna。
  • 这样做可以保证团队协作时每个人用的 lerna 版本一致,避免“在我电脑上没问题”的情况。

下面一步步详细讲解 npm/yarn 的 .bin 机制和 npx 的底层实现原理。

1. .bin 机制

什么是 node_modules/.bin

  • 当你用 npm 或 yarn 安装依赖时(无论是全局还是本地),如果某个包的 package.json 里有 "bin" 字段,npm/yarn 会自动把这些可执行文件的快捷方式(Windows 下是 .cmd 文件,Unix 下是软链接)放到当前项目的 node_modules/.bin 目录下。
  • 这样你就可以在命令行里直接运行这些工具,而不用写完整路径。

例子

比如你安装了 lerna 作为 devDependencies:

npm install lerna --save-dev

此时会生成:

node_modules/.bin/lerna.cmd   # Windows 下的可执行脚本
node_modules/.bin/lerna       # Unix 下的软链接

这些文件实际上会调用 node_modules/lerna/cli.js 或类似的入口文件。


2. npx 的底层实现

npx 是如何工作的?

  • 当你运行 npx lerna run build 时,npx 会在以下路径顺序查找 lerna
    1. 当前目录下的 node_modules/.bin
    2. 全局安装的包
  • 找到后,npx 会直接调用这个可执行文件(比如 node_modules/.bin/lerna.cmd),并把后面的参数传递给它。

为什么推荐用 npx?

  • 保证你用的是当前项目依赖的版本,而不是全局的,避免版本冲突。
  • 不需要全局安装,团队协作更方便。

npx 的特殊能力

  • 如果本地没有找到命令,npx 还可以临时下载并执行(但一般不推荐这样用,除非你明确需要)。

3. yarn 的机制

  • yarn 也会自动在 node_modules/.bin 生成可执行文件。
  • 当你用 yarn run xxx 时,yarn 会自动把 node_modules/.bin 加入 PATH 环境变量,确保可以直接调用本地依赖的命令。

总结2:

  • node_modules/.bin 是 npm/yarn 自动生成的可执行文件目录,方便你直接运行依赖包的命令行工具。
  • npx 会优先使用本地 .bin 里的命令,保证项目一致性。
  • 这套机制极大地方便了前端工程化和团队协作。

.bin 目录的实际内容

下面详细说明 .bin 目录的实际内容,并演示如何查看和理解它。

1. .bin 目录的作用

node_modules/.bin 目录用于存放所有依赖包(无论是本地依赖还是全局依赖)声明的可执行命令的快捷方式。这样你可以直接在命令行中运行这些工具,而不用写完整路径。


2. 实际内容举例

假设你的项目依赖了 lernats-jestjest 等包,执行完 npm installyarn install 后,node_modules/.bin 目录下会出现如下内容(以 Windows 为例):

d:\001-study\js\getting-started-example\node_modules\.bin\
│
├── lerna.cmd
├── lerna
├── jest.cmd
├── jest
├── ts-jest.cmd
├── ts-jest
└── ...(其他依赖的可执行文件)
  • .cmd 文件是 Windows 下的批处理脚本,方便在命令行直接调用。

在这里插入图片描述

  • 没有扩展名的文件是 Unix/Linux 下的可执行软链接或 shell 脚本。.ps1 是 PowerShell 脚本,给 PowerShell 用的。
    在这里插入图片描述

3. 如何查看 .bin 目录内容

你可以在项目根目录下运行以下命令查看:

dir node_modules\.bin

或者更详细地查看所有文件:

dir node_modules\.bin /a

4. 这些文件的作用

  • 这些文件实际上是指向各自依赖包的入口文件(如 node_modules/lerna/cli.js)。
  • 当你在命令行输入 lernajest 时,系统会自动在 node_modules/.bin 里查找并执行对应的脚本。

5. 关联知识

  • 当你用 npx lernayarn run lerna 时,实际上就是调用了 node_modules/.bin/lerna
  • 这样可以保证你用的是本地依赖的版本,而不是全局安装的版本。

http://www.dtcms.com/wzjs/553206.html

相关文章:

  • 怎样策划一个营销型网站10个暴利小生意创业
  • 静安做网站公司wordpress个人博客简约
  • 合肥网站专业制作电子商务公司创意名字
  • .net怎么做网站提供零基础网站建设教学培训
  • 一起买买买网站建设网页设计模板html代码压缩包下载
  • 顺义网站建设工程建设服务平台
  • 网站开发类虚拟主机和vps的区别
  • 百度站内搜索海口网站排名推广
  • 价格便宜的网站建设郑州网站提升排名
  • 淘宝联盟推广网站怎么建设最新网站模板
  • 中国山东建设监理协会网站南昌电子商务网站建设
  • 做网站申请域名的流程南阳网站推广价格
  • 大庆市住房和城乡建设局网站wordpress文章前台看不到
  • 网站模版自适应网站开发管理系统有哪些
  • 江苏宜安建设有限公司网站蓝色高科技网站模板
  • 网站功能建设描述书网站备案是域名备案还是空间备案
  • 自己编写网站vs做网站用3层架构
  • 提供常州微信网站建设微信营销系统
  • 新站如何快速收录包装设计网页
  • 建设网站宣传外贸一般用什么平台
  • 长沙企业建站在线咨询空间登录
  • 一个虚拟主机绑定2个网站长春网站建设解决方案
  • 网页设计大赛网站开发网站空间管理权限
  • vue做网站前台网站建设贰金手指科捷9
  • 网站留白佛山营销网站开发
  • 中山网站建设招聘网络规划设计师岗位
  • 济南网络公司建站海南网络电视台
  • 网站推广的方法枫子公众号开发者id在哪里查看
  • 电脑本地网站建设安阳县事业单位招聘2021
  • 网站编程赚钱网站维护需要什么技能