使用npm创建一个全局的cli命令,就像vue-cli一样

我们用过vue-cli等工具包,全局安装之后,我们可以直接使用vue create等命令,实际上能够这样使用的原因,就是使用了package.json里面的bin字段注册命令。接下来就以一个脚本文件为例子为大家演示一下bin是如何发挥作用的。

创建项目

新建一个空文件夹npm-learn,然后初始化一个npm包:

npm init

会在这个文件夹下面生成一个package.json文件:

创建cli命令

在文件夹下面创建link文件夹,并且创建一个cli.js文件:

#!/usr/bin/env nodeconsole.log(process.argv)

#!/usr/bin/env node  是告诉机器,需要用node来执行这个文件

console.log(process.argv);  是打印运行的命令行参数,可以自行百度:node process 

将cli.js添加到package.json里面:

然后在项目文件夹中运行命令:将命令链接到全局

npm link

全局就可以使用了:随便打开一个命令行,就可以测试了

注销全局包

断开本地项目与另一个项目的连接。有两种用法:1.注销全局包;2.断开全局注册的包在另一个指定项目的链接。

方法一:注销全局包。在当前项目或包的目录下使用如下命令。

npm unlink 项目名

例如:

npm unlink npm-learn

分析

在安装第三方带有bin字段的npm包时,可执行文件就会被链接到当前项目的./node_modules/.bin中,就可以使用命令行了:

但如果是把包全局安装,npm就会把文件链接到prefix/bin中,我们就可以直接全局使用learn命令执行脚本了,更加简便

总结:
bin字段用于注册运行脚本的命令,全局安装后,可在全局执行该命令。

注意:
一般我们在自己开发时进行测试时使用npm link链接到全局,把脚本打包之后,别人在安装使用时使用全局安装

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

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

相关文章

跳过mysql权限验证来修改密码-GPT纯享版

1.打开 MySQL 的配置文件,通常是 my.ini 或 my.cnf。 2.找到 [mysqld] 部分,如果没有则添加。 3.在 [mysqld] 部分中添加一行:skip-grant-tables,这个选项告诉 MySQL 服务器跳过权限验证,允许任何用户连接而不需要密码…

java数据结构与算法基础-----排序------堆排序

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 堆排序是利用堆(数据结构)设计的排序算法…

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…

SRC中的一些信息收集姿势

前言 前前后后挖了四个月的EDUSRC,顺利从路人甲升到了网络安全专家,从提交的内容来看大部分还是以中低危为主,主打的就是弱口令和未授权。 在这过程中还是比较浮躁的,因此接下来的时间还是要好好沉淀一下自身的技术,学…

undo log

从这篇「执行一条 SQL 查询语句,期间发生了什么? (opens new window)」中,我们知道了一条查询语句经历的过程,这属于「读」一条记录的过程,如下图: 那么,执行一条 update 语句,期间发…

vue3 报错 require is not defined

问题 require is not defined 原因 vite 不支持require的用法, webpack是支持的 解决 方法一: 更改vite使用语法 vite官网 方法二 安装转换插件vite-plugin-require-transform 仓库地址 参考 关于Vite不能使用require问题 方法二Vite 踩坑 —— …

鸿蒙开发-UI-动画-页面间动画

鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 鸿蒙开发-UI-图形-弹簧曲线动画 文章目录 前言 一、放大缩…

【TD3思路及代码】【自用笔记】

1 组成(Target Network Delayed Training) Actor网络:这个网络负责根据当前的状态输出动作值。在训练过程中,Actor网络会不断地学习和优化,以输出更合适的动作。Critic网络:TD3中有两个Critic网络&#xff…

自然拼读-26个字母发音

自然拼读-26个字母发音 26个字母 Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz 元音和辅音 辅音 元音 单词 元音 Aa Ee Li Oo Uu 另外:Yy是半元音 辅音 Bb Cc Dd Ff Gg Hh Jj Kk Ll Mm Nn Pp Qq Rr Ss Tt Vv Ww X…

利用二分法求方程在某个范围内的根

问题描述: 利用二分法求方程在(-10,10)的根。 方法:先求出两端点的中点,然后将中点带入方程中检查是否等于0,如果等于0说明找到了根,如果大于0,说明根在左半部分,将rig…

Linux-网络层IP协议、链路层以太网协议解析

目录 网络层:IP协议地址管理路由选择 链路层 网络层: 网络层:负责地址管理与路由选择 — IP协议,地址管理,路由选择 IP协议 数据格式: 4位协议版本:4-ipv4协议版本 4位首部长度:以…

2024计算机二级Python 11和12

单向列表不能再回头,只有从头指针开始才可以,双向列表会出现重复访问,二叉树节点从根开始可以达到目的 面向对象的主要特征:抽象、封装、继承、多态 Python通过解释方式执行,执行速度没有采用编译方式的语言执行的快 f…

混合像元分解:Matlab如何帮助揭示地表组成?

光谱和图像是人们观察世界的两种方式,高光谱遥感通过“图谱合一”的技术创新将两者结合起来,大大提高了人们对客观世界的认知能力,本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测。以高光谱遥感为核心,构建…

c++21,22多肽

普通人买全价,学生半价 多肽 构成条件 1.虚函数重写 2.父类的指针或者引用去调用虚函数 两个virtual没有关联 函数前面增加virtual虚函数,p是父类的引用,既可以传父类对象也可以传子类对象 去掉引用(子类传给父类&#xff…

云手机为电商提供五大出海优势

出海电商行业中,各大电商平台的账号安全是每一个电商运营者的重中之重,账号安全是第一生产力,也是店铺运营的基础。因此多平台多账号的防关联管理工具成了所有电商大卖家的必备工具。云手机最核心的优势就是账户安全体系,本文将对…

linux系统----------MySQL索引浅探索

目录 一、数据库索引介绍 二、索引的作用 索引的副作用 (缺点) 三、创建索引的原则依据 四、索引的分类和创建 4.1普通索引 4.1.1直接创建索引 4.1.2修改表方式创建 4.1.3创建表的时候指定索引 4.2唯一索引 4.2.1直接创建唯一索引 4.2.2修改表方式创建 4.2.3创建表…

Go语言hash库完全教程:从基础到高级应用

Go语言hash库完全教程:从基础到高级应用 简介hash库概览hash接口常用的哈希函数实现应用场景性能特点字符串哈希计算 使用hash库进行数据哈希文件哈希计算 hash库在数据校验中的应用使用SHA256进行文件完整性验证 hash库在安全加密中的应用生成安全的密码哈希使用HM…

cmd窗口运行jar程序,点击一下cmd窗口后java程序就暂停了

cmd窗口运行jar程序时,在cmd窗口点击了一下,如果你选中了(页面会有个白色的选中内容),java程序就会暂停,这是只有按一下鼠标右键或着CtrlC才能取消选中,程序才会继续运行,如果java程…

视频素材库哪家好?我给大家来分享

视频素材库哪家好?这是很多短视频创作者都会遇到的问题。别着急,今天我就来给大家介绍几个视频素材库哪家好的推荐,让你的视频创作更加轻松有趣! 视频素材库哪家好的首选当然是蛙学网啦!这里有大量的高质量视频素材&am…

学成在线_视频处理_视频转码不成功

问题 当我们用xxljob进行视频处理中的转码操作时会发现视频转码不成功。即程序会进入下图所示的if语句内。 问题原因 在进行视频转码时程序会调用Mp4VideoUtil类下的 generateMp4方法,而result接收的正是该方法的返回值。那么什么时候generateMp4方法的返回值会…