#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)

#! /usr/bin/env node

js 代码…

这条指令通常出现在Node.js脚本文件的开头,它的作用是用来指定该脚本文件使用 /usr/bin/env 来寻找并执行 node 解释器。这里的 node 即Node.js的执行环境。

#!/usr/bin/env node 是Unix/Linux系统(包括Mac OS X)下的一个Shebang(#!)语法,用于指明脚本的解释器。当系统遇到带有Shebang的脚本并尝试执行时,会根据Shebang行指定的路径去找对应的解释器来执行脚本内容。

具体来说,/usr/bin/env 是一个实用工具,它可以搜索环境变量PATH下的指定程序。在这里,它会搜索PATH路径下是否存在名为 node 的可执行文件(即Node.js解释器)。这样做的好处是可以灵活适应不同的系统环境,因为在不同系统上,Node.js的安装位置可能会有所不同,但通常都会将其添加到PATH环境变量中。

因此,当你在命令行环境下运行这样一个脚本时,系统会调用Node.js解释器来执行该脚本的JavaScript代码。

#!/usr/bin/env node 是一个 Unix shell 脚本(Shebang)行,通常出现在 Node.js 应用程序的可执行文件顶部。它的作用是告诉操作系统(特别是类 Unix 系统,如 Linux、macOS 等)使用 env 工具查找并执行名为 node 的程序来解释接下来的脚本内容。

env 工具可以搜索系统 PATH 环境变量中预设的路径,找到并执行 node,也就是 Node.js 解释器。这样,当你在终端中直接运行这个脚本文件时,操作系统就会使用 Node.js 来执行这个脚本。

例如,如果你有一个名为 myapp.js 的 Node.js 应用,内容开头是:

```bash
#!/usr/bin/env node

console.log(‘Hello, World!’);
```

给这个文件添加执行权限后(chmod +x myapp.js),就可以直接在终端中运行:

```bash
./myapp.js
```

此时,系统会找到并使用 Node.js 解释器来运行这个脚本,并输出 “Hello, World!”。

npm link

将项目链接到全局,这样可以在终端任意目录去执行命令

npm link 是 Node.js 包管理器 (npm) 提供的一个命令,用于创建本地开发环境中的软链接,以便在一个本地项目中使用另一个本地项目的包作为依赖。这个命令主要用于开发和测试自定义模块时,使得在不同项目之间共享和实时更新代码变得方便。

以下是 npm link 常见的使用场景与步骤:

  1. 发布本地模块
    • 在你的自定义模块项目(例如:my-module)的根目录下执行 npm link。这会在全局范围内的 node_modules 目录下创建一个符号链接指向当前项目。
  2. 在主应用中使用本地模块
    • 进入到你想使用该本地模块的项目目录中。
    • 执行 npm link my-module,这样会在当前项目中创建一个符号链接,指向之前全局链接的 my-module

这样一来,当你修改并保存 my-module 中的代码时,这些更改会立即反映到通过 npm link 关联的所有项目中,无需重复安装。

具体步骤简述如下:

  1. 在模块项目中:

    cd path/to/my-module
    npm link
    
  2. 在要引用模块的主项目中:

    cd path/to/main-project
    npm link my-module
    

现在,main-project 就能够像使用普通npm包一样使用 my-module 的最新代码了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一个由systemd管理tomcat的tomcat.service文件的编写

如果你有一个tomcat的二进制包你就可以使用以下.service文件直接套用,前提是你必须先停止现有的tomcat cat tomcat.service[Unit] Descriptiontomcat server daemon # 描述 Aftersyslog.target network.target remote-fs.target nss-lookup.target # 在那些服务之…

001 redis高并发减库存

文章目录 释放锁加lua脚本String lockValue(唯一标识符作为锁的值)lua脚本无String lockValue(唯一标识符作为锁的值)无Lua脚本加锁的过期时间防死锁无lockValue代码 lockValue加了lockValue无lua脚本代码加了lockValue加了lua脚本…

【Java | 多线程】LockSupport 的使用和注意事项

了解一下 LockSupport LockSupport是一个类,位于java.util.concurrent.locks包中,提供了基本的线程同步机制。 LockSupport的主要作用是挂起和唤醒线程。它提供了两个主要的静态方法:park()和unpark()。 park():用于挂起当前线…

Harmony专栏 TypeScript教程

TypeScript教程 TypeScript简介TypeScript安装使用vscode开发TypeScript应用TypeScript编译器TypeScript基本语法TypeScript变量TypeScript let const var区别TypeScript 常量TypeScript数据类型TypeScript数字类型numberTypeScript字符串类型stringTypeScript 字符串常用函数…

thsi指针用法总结

1 c类对象中的变量和函数是分开存储的 2 所以对象共用一份成员函数,类的大小是指非静态的成员变量; this 完成链式操作 const 修饰成员函数

图像空间(IS),高级特征空间(FS)和两阶段(TS)重采样

what is the 3 types :image space (IS), high-level feature space (FS) and two-stage (TS) resampling? what is the difference? pros and cons? 这三种类型:图像空间(IS),高级特征空间(FS)和两阶段…

Kafka 3.x.x 入门到精通(02)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通(02)——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.1.1 解压文件2.1.2 安装ZooKeeper2.1.3 安装Kafka2.1.4 封装启动脚本 2.2 集群启动2.2.1 相关概念2.2.1.1 代理:Broker2.2.1.2 控制器:Controller …

【Linux 开发第一篇】如何在安装中完成自定义配置分区

安装配置自定义配置分区 在安装Centos的过程中,我们可以在安装位置部分手动配置分区 选择我要配置分区,点击完成: 我们自动分区分为三个分区:boot分区(引导分区),swap(交换分区&…

云备份项目--项目介绍

📟作者主页:慢热的陕西人 🌴专栏链接:C云备份项目 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容项目一些详细信息的介绍 文章目录 云备份项目1.项目介绍…

ElasticSearch(3)

目录 126.ES聚合中的Metric聚合有哪些?如何解释? 127.ES聚合中的管道聚合有哪些?如何理解? 128.如何理解ES的结构和底层实现? 129.ES内部读取文档是怎样的?如何实现的? 130.ES内部索引文档是怎样的?如何实现的?</

WPS表格,怎样保留每个人的最近日期的那一行数据?

方法很多&#xff0c;这里演示使用排序删除重复项 来完成。具体操作如下&#xff1a; 1. 选中数据区域中任意一个单元格&#xff0c;注意要么全选数据区域&#xff0c;要么只选一个单元格 2. 点击数据选项卡&#xff0c;排序&#xff0c;自定义排序&#xff0c; 在弹出对话框…

告别互信息:跨模态人员重新识别的变分蒸馏

Farewell to Mutual Information: Variational Distillation for Cross-Modal Person Re-Identification 摘要&#xff1a; 信息瓶颈 (IB) 通过在最小化冗余的同时保留与预测标签相关的所有信息&#xff0c;为表示学习提供了信息论原理。尽管 IB 原理已应用于广泛的应用&…

简述MASM宏汇编

Hello , 我是小恒不会java。今天写写x86相关底层的东西 寄存器 8086由BIU和EU组成 8088/8086寄存器有14个。8通用&#xff0c;4段&#xff0c;1指针&#xff0c;1标志 8个通用寄存器&#xff1a;这些寄存器可以用来存储任意类型的数据&#xff0c;包括整数、地址等。8086有8个…

【Java--数据结构】提升数据处理速度!深入理解Java中的顺序表机制

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 两种创建顺序表的方法及区别 认识ArrayList的构造方法 不带参数的构造方法 带参数的构造方法 利用Collection 构造方法 举例 ArrayList 常用方法演示 add addAll remo…

Linux进程详解三:进程状态

文章目录 进程状态Linux下的进程状态运行态-R阻塞态浅度休眠-S深度睡眠-D暂停状态-T暂停状态-t 终止态僵尸-Z死亡-X 孤儿进程 进程状态 进程的状态&#xff0c;本质上就是一个整型变量&#xff0c;在task_struct中的一个整型变量。 状态的存在决定了你的后续行为动作。 Linu…

直接用表征还是润色改写?LLM用于文生图prompt语义增强的两种范式

直接用表征还是润色改写&#xff1f;LLM用于文生图prompt语义增强的两种范式 导语 目前的文生图模型大多数都是使用 CLIP text encoder 作为 prompt 文本编码器。众所周知&#xff0c;由于训练数据是从网络上爬取的简单图文对&#xff0c;CLIP 只能理解简单语义&#xff0c;而…

拿捏 顺序表(1)

目录 1. 顺序表的分类2. 顺序表实现3. 顺序表实现完整代码4. 总结 前言: 一天xxx想存储一组数据, 并且能够轻松的实现删除和增加, 此时数组大胆站出, 但是每次都需要遍历一遍数组, 来确定已经存储的元素个数, 太麻烦了, 于是迎来了顺序表不屑的调侃: 数组你不行啊… 顺序表是一…

C++面向对象——类与对象

文章目录 类与对象构造函数、析构函数get/set方法函数&#xff1a;类内声明、类外定义staticthis指针友元名字空间 类与对象 #include<iostream> #include<string> using namespace std; /* 类与对象 */ class Person{public:string name;// 固有属性&#xff0c…

第二期书生浦语大模型训练营第四次笔记

大模型微调技术 大模型微调是一种通过在预训练模型的基础上&#xff0c;有针对性地微调部分参数以适应特定任务需求的方法。 微调预训练模型的方法 微调所有层&#xff1a;将预训练模型的所有层都参与微调&#xff0c;以适应新的任务。 微调顶层&#xff1a;只微调预训练模型…

oracle 12c+ max_string_size参数

一个客户的数据库版本是19.3,在做数据库复制的时候,目标端报错了,查看了一下问题发现表的字段长度有不对,在12c以前我们都知道varchar的长度最大是4000,但是客户这里居然有32767: 把客户的建表语句弄出来,放到我的一个19c的测试环境进行测试: 发现报错了: 这里报错很明显了,是M…