美文网首页让前端飞饥人谷技术博客
开发一个nodejs命令行工具

开发一个nodejs命令行工具

作者: 朱小维 | 来源:发表于2019-01-29 18:38 被阅读4次

最近在学习nodejs,在掌握了一些基础知识之后,就想着如何运用它解决一些简单的问题。

代码地址

https://github.com/zhuweileo/gitignore-cmd

目标

平时初始化项目工程的时候,总是需要添加.gitignore文件,我之前总是手动复制粘贴一个写好的模板,虽然也不算麻烦,但是作为懒癌晚期,我连复制粘贴也不愿意,于是我就想用nodejs写一个命令行工具,直接输入一个命令,就在当前文件夹内生成.gitignore文件。其实就是让nodejs帮你复制粘贴。

项目目录

1548755955537.png

主要功能代码

getIgnore.js

var https = require('https');
var fs = require('fs');

var url = 'https://raw.githubusercontent.com/zhuweileo/my-git-ignore/master/.gitignore';

module.exports = function getIgnore(){
  https.get(url, function (res) {
    res.setEncoding('utf8');

    let rawData = '';

    res.on('data', (chunk) => {
      rawData += chunk;
    });
    res.on('end', () => {
      fs.writeFileSync('.gitignore',rawData)
    });
  }).on('error',function (e) {
    console.log(e)
  })
}

实现逻辑很简单:

  • 通过https请求,从我的git仓库中获得.gitignore文件
  • 将获得文件内容写入到当前目录

为什么从远程请求?

这样我每次都可以取到最新的.gitignore文件。一但.gitignore文件更新,不需要更新命令行工具。

package.json

{
  "name": "zw-gi",
  "version": "0.0.1",
  "description": "快速生成gitignore的命令行工具",
  "main": "getIgnore.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "朱维",
  "license": "ISC",
  "bin": {
    "zw-gi": "bin/zw-gi"
  }
}

这里的关键点是bin字段:

 "bin": {
    "zw-gi": "bin/zw-gi"
  }

意思是:当你在命令行中执行zw-gi命令时,nodejs会执行bin/zw-gi文件中的代码

当通过npm install zw-gi -g命令安装你的nodejs命令行工具时,npm会根据这个 bin字段,生成可执行程序。不同的系统生成的可执行程序不同:

  • windows系统:zw-gi.cmd (位于C:\Users{用户名}\AppData\Roaming\npm)
  • linux系统:zw-gi

bin/zw-gi

意思很简单,就是执行我们写的getIgnore函数

#!/usr/bin/env node
var getIgnore = require('../getIgnore')
getIgnore();

发布

这样这个模块就写好了,可以发布到npm上了。

也可以不发布,在package.json文件的同级目录执行npm install . -g安装到本地,自娱自乐。

参考

七天学会NodeJS

Nodejs 开发命令行工具

相关文章

网友评论

    本文标题:开发一个nodejs命令行工具

    本文链接:https://www.haomeiwen.com/subject/pwxfsqtx.html