nodejs命令行工具的开发

7 篇文章 0 订阅
6 篇文章 0 订阅

命令行工具的开发应该是每个前端工程师必备的技能,但是有很多同学刚开始学习时不知道如何入手,今天就来简单介绍一下如何用commander来开发命令行工具。

初始化

  • 首先cd进入某个文件夹,运行npm init,根据提示信息来生成package.json文件;

  • 之后在同级目录下创建bin/test1.js文件;

  • 接着在package.json中增加bin字段:

    "bin": {
        "test1": "./bin/test1.js"
      },
    

    我们在写命令行工具的时候,需要指定一个可执行文件。在package.json中,bin字段用来映射命令名和可执行文件。在通过npm install -g全局安装的时候,npm会symlink可执行文件到prefix/bin文件夹。如果通过npm install本地安装的时候, npm会symlink可执行文件到./node_modules/.bin/文件夹。(完整的字段说明在这里:https://docs.npmjs.com/files/package.json)

  • 之后开始编写test1.js文件

#! /usr/bin/env node //选择用什么来运行脚本
var program = require('commander'),
    chalk = require('chalk'),
    path = require('path'),
    fs = require('fs'),
    inquirer = require('inquirer');

program
    .version(require('../package').version)
    .description('a test commander program')
    .option('-n --name <name>', 'your name')
    .option('-a --age <age>', 'your age')
    .option('-e --enjoy [enjoy]');

program
    .command('add [dir]')
    .option('-s --select', 'select answer')
    .on('--help', () => {
        console.log('开始创建文件')
    }) //on像是某些option的说明
    .action((dir, cmd) => {
        if(cmd.select){
            console.log('start select mode');
            // inquirer 交互式命令时使用
            inquirer.prompt({
                type: 'input',
                name: 'email',
                message: '请输入邮箱'
            }).then((res) => {
                // chalk为输出的文字加状态,如颜色、字体等
                console.log(chalk.red(res.email));
                // process.cwd()获取当前路径
                var filePath = path.join(process.cwd(), dir || 'common');
                fs.exists(filePath, (exists) => {
                    console.log('文件是否存在', chalk.yellow(exists));
                    if(!exists)
                        fs.mkdir(filePath, (err) => {
                            if(err) console.log('err', err);
                        });
                    else
                        fs.rmdirSync(filePath);
                });
            });
        }
    });

program.parse(process.argv);

调试

当我们在开发命令行工具时不可能每次修改的时候都传到服务器上去重新下载更新检测,故这里我们使用npm link方法;
在npm包文件夹下执行npm link 命令,会创建一个符号链接,链接全局文件夹{prefix}/lib/node_modules/和你执行npm link的包文件夹。
注意:package-name是package.json中的name, 而不是文件夹名。

详细的解释在这儿: https://docs.npmjs.com/cli/link

在本文中,我们在根目录下使用npm link,之后根目录下创建/src文件夹来进行测试;

cd src/

test1 -h

    Usage: test1 [options] [command]

    a test commander program
    
    Options:
      -V, --version        output the version number
      -n --name <name>     your name
      -a --age <age>       your age
      -e --enjoy [enjoy]   
      -h, --help           output usage information
    
    Commands:
      add [options] [dir]

test1 add '/image' -s //增加交互式消息,并且成功输入之后在src文件夹下创建image文件夹

image

发布

单纯的发布包到npm非常简单,只需要一条命令:

npm publish

但是一个完善规范的发布流程不仅如此,还需要考虑版本号的规范(Semver),commit message的规范,tag等一系列因素。如果手动来搞的话,是挺麻烦的。

这里推荐使用relix, 一步搞定!

sudo npm i relix -g

进入cli-demo文件夹,然后:

relix --patch

会自动帮你生成新版本号,生成提交信息,打tag,推送提交和tag到github,发布npm包!relix的详细用法请看relix文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js项目实战开发是指利用Node.js技术栈进行实际的项目开发工作。通过使用Node.js及其相关工具和框架,开发人员可以快速构建高性能的Web应用、API接口、跨平台的桌面应用等。以下是一些常见的Node.js项目实战开发方法和步骤: 1. 安装Node.jsnpm:首先需要在本地环境中安装Node.jsnpm(Node Package Manager),这样才能使用Node.js的各种功能和工具。 2. 创建项目:使用命令行工具进入项目所在的文件夹,运行`npm init`命令来创建一个新的Node.js项目。这将生成一个`package.json`文件,用于管理项目的依赖和配置信息。 3. 安装依赖:根据项目需求,在`package.json`文件中添加所需的依赖项,并使用`npm install`命令安装这些依赖。 4. 使用Express框架:Express是一个流行的Node.js Web框架,可以简化项目的开发过程。通过使用Express,可以方便地创建路由、处理HTTP请求和响应、管理中间件等。可以使用`npm install express`命令安装Express,并在项目代码中引入和使用。 5. 使用其他框架和工具:除了Express,还可以根据项目需求选择和使用其他适合的框架和工具。例如,使用Electron框架可以构建跨平台的桌面应用,使用restify框架可以快速构建API接口,使用数据库框架可以实现数据的读写和操作等。 6. 开发和调试:在项目代码中编写业务逻辑和功能实现,并使用调试工具(如nodemon)对项目进行实时监测和自动重启。这样可以提高开发效率,节省手动重启项目的时间。 7. 测试和优化:在开发过程中,进行单元测试和集成测试,确保项目的功能和性能符合要求。根据测试结果进行性能调优和代码优化,提升项目的质量和效率。 8. 部署和发布:完成开发和测试后,将项目部署到服务器或云平台上,并配置好相关的环境和参数。根据项目需求,可以选择不同的部署方式,如使用Docker容器、服务器less架构等。 总结来说,Node.js项目实战开发需要掌握Node.js的基础知识和相关工具,选择适合的框架和工具,编写代码实现项目需求,并进行测试、优化和部署。通过不断的实践和学习,开发人员可以提升自己的Node.js项目实战能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值