0.0.3 • Published 11 months ago

zt-my-cli v0.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
11 months ago

介绍

项目地址

使用

  1. npm i zt-my-cli
  2. my-cli init 或者 my-cli create
  3. 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

0.0.3

11 months ago

0.0.2

11 months ago

0.0.1

11 months ago

0.0.0

11 months ago