将 Node.js 应用发布为 CLI 工具

文摘   2024-11-19 15:40   湖北  

初始化项目

  • 确保有 package.json,通过 npm init 创建。

  • 目录结构如下:


    my-cli-tool/
    ├── bin/
    │ └── cli.js # CLI 入口文件
    ├── utils/
    │ └── logger.js # 日志工具
    ├── main.js # 核心逻辑
    ├── package.json # 项目配置文件


cli文件的的示范代码

#!/usr/bin/env node

const { program } = require('commander');
const path = require('path');
const fs = require('fs');
const Logger = require('../utils/logger');
const package = require('../package.json');

program
.version(package.version)
.description('将 Markdown 文件发布为草稿')
.argument('<file>', 'Markdown 文件路径')
.option('-c, --config <path>', '配置文件路径', './config.json')
.option('-o, --output <path>', '输出 HTML 文件路径')
.action(async (file, options) => {
try {
const inputPath = path.resolve(file);
const outputPath = options.output || inputPath.replace(/\.md$/, '.html');

if (!fs.existsSync(inputPath)) {
Logger.error('文件不存在', inputPath);
process.exit(1);
}

const main = require('../main'); # 引入入口文件
await main(inputPath, outputPath);
} catch (error) {
Logger.error('执行失败', error.message);
process.exit(1);
}
});

program.parse();

配置 package.json

添加以下字段:

{
"name": "my-cli-tool",
"version": "1.0.0",
"bin": {
"my-cli-tool": "./bin/cli.js"
}
}

设置执行权限

cli.js 文件顶部添加:

#!/usr/bin/env node

并运行:

chmod +x bin/cli.js

本地全局安装并测试

在项目根目录运行:

npm install -g

测试命令:

my-cli-tool <file.md> -o <output.html>

发布到 npm(可选)

登录并发布:

npm login
npm publish

说明

  • CLI 工具的入口文件需要通过 #!/usr/bin/env node 指定。

  • 全局安装后,命令行工具可以直接运行。

  • package.jsonbin 字段是关键,绑定命令名和入口文件。


    运行效果如图所示

字节笔记本
专注于科技领域的分享,AIGC,全栈开发,产品运营
 最新文章