zt-my-cli
v0.0.3
Published
## 使用 1. npm i zt-my-cli 2. my-cli init 或者 my-cli create 3. my-cli -V my-cli -h
Downloads
2
Readme
介绍
项目地址
使用
- npm i zt-my-cli
- my-cli init 或者 my-cli create
- my-cli -V my-cli -h
知识点
这是一个可以像vue-cli一样一键拷贝模版项目的项目
package.json文件配置如下
{
//在 npm 中,@ 符号用于指定包的作用域。一个 npm 包的名称通常由包名和作用域组成。
//例如,假设你希望创建一个名为 foo 的包,并将其发布到一个名为 my-scope 的作用域下,那么这个包的完整名称就应该是 @my-scope/foo。
"name": "zt-my-cli",
"version": "1.0.2",
"description": "",
//"main": "index.js" 表示在 require() 或 import 该包时会优先加载 index.js 文件作为入口文件。也就是说,当你的项目依赖这个包,使用 require('zt-my-cli') 或 import 'zt-my-cli' 的方式时,它会默认加载 index.js 文件并执行其中的代码。
//注意:如果你的包中存在其他的入口文件,那么你可以在 package.json 中添加 "exports" 字段来指定不同的入口文件,或者使用 import 'zt-my-cli/other-index' 这样的语法来引用不同的入口文件。
"main": "index.js",
//"bin" 字段,它用于指定一些命令行工具的入口文件
//当你在终端中输入 my-cli 时,它实际上会执行 node ./bin/index.mjs
//在 Node.js 中,可以通过指定文件扩展名为 .mjs 来将一个文件标记为 ECMAScript 模块,即用ECMAScript的import 和 export,而不是 CommonJS 规范中的 require 和 module.exports
"bin": {
"my-cli": "./bin/index.mjs"
},
"scripts": {
"lint": "echo \"Error: no lint specified\" && exit 0",
"test": "echo \"Error: no test specified\" && exit 0"
},
"keywords": [],
"author": "zt",
"license": "ISC",
"dependencies": {
//用于在终端中添加带颜色的输出
"chalk": "4.0.0",
//用于处理命令行参数
"commander": "10.0.0",
//用于从 .env 文件中加载环境变量
"dotenv": "^16.1.4",
//用于从 Git 仓库中下载代码
"download-git-repo": "3.0.2",
//用于提供更强大的文件系统操作功能
"fs-extra": "11.1.0",
//用于渲染模板
"handlebars": "^4.7.7",
//用于创建交互式命令行界面
"inquirer": "8.0.0",
//用于显示进度条和等待动画
"ora": "6.1.2"
}
}
关于 #! /usr/bin/env node #!/usr/local/bin/bash 这种注释
在 Unix 系统中,路径以 #! 开头的注释(也称为 shebang)被视为特殊的指令,这个指令告诉操作系统怎样去运行这个脚本。 当你运行一个包含上述 shebang 的脚本时,Unix 系统会读取这个注释,然后使用指定的解释器来执行这个脚本。这样可以确保脚本在不同的系统上都能够正确地运行,而不用担心系统中默认的 shell 解释器是否与脚本兼容。
- #! /usr/bin/env node,它指定了当前脚本文件使用 /usr/bin/env 工具来查找 node 的可执行文件,并将该文件作为解释器来解析当前脚本文件。因此,这个声明的作用就是告诉操作系统要使用 Node.js 解释器来执行当前文件。 当我们在终端中输入 ./filename.js 来执行一个 Node.js 脚本时,实际上操作系统会首先检查该文件的 shebang 声明。如果存在以 #! 开头的声明语句,那么操作系统会将该声明语句及其后面的命令作为一个整体来执行,并将当前文件作为输入传递给该命令进行解释和执行。这个过程称为“shebang 处理”。 因此,在 #!/usr/bin/env node 声明存在的情况下,我们可以直接在终端中运行 ./filename.js 命令来执行当前 Node.js 脚本,而不需要显式地指定 node 命令来解释执行该文件。 也可以当前文件不指定shebang,直接显式执行需要node 执行
"bin": {
"my-cli": "node ./bin/index.mjs"
},
env 是一个 Unix/Linux 系统下的命令行工具,用于在当前环境中执行一个命令。它可以用来设置临时环境变量、修改当前工作目录、指定语言等操作。 //env 命令的常见用法如下: //设置临时环境变量: env VAR_NAME=VAR_VALUE command 其中 VAR_NAME 是环境变量名,VAR_VALUE 是环境变量值,command 是要执行的命令。
#!/usr/local/bin/bash ,它告诉 Unix 系统该脚本使用 Bash 解释器来运行。这个注释中的路径 /usr/local/bin/bash 表示 Bash 解释器的安装位置,可以根据实际情况进行修改(which bash => /bin/bash)
部署
npm publish --registry=https://registry.npmjs.org --access=public
调试
包的调试可以通过本地npm link 解除link: npm unlink zt-my-cli