资讯专栏INFORMATION COLUMN

快速写个node命令行工具

QLQ / 1821人阅读

摘要:一快速入手背景好多包都提供命令行工具。二与命令行工具先初始化个项目配置创建文件,把路径添加到中这些固定的工作可以由帮我们完成。参考用创建命令行工具配置

一、快速入手 1.1 背景:

好多nodejs包都提供命令行工具。咱也来学学吧。

1.2 刀耕火种时代:

环境:
win32_X86
nodejs: v5.9.1
npm: 3.7.3
首先创建个bat文件(cli-demo.bat),bat文件中调用node命令执行相应的js文件(index.js):
index.js内容:

"use strict";
function add(args) {
    var sum = 0;
    args.forEach(function(number){
        var num = +number;
        if(!isNaN(num)){
            sum += +num;    
        }
        
    })
    return sum;
}
var args = process.argv.slice(2); // 处理参数
var sum = add(args);
console.log(sum);

cli-demo.bat内容(index.js相同目录):

@ECHO OFF
SETLOCAL
SET "NODE_EXE=%~dp0
ode.exe"     
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"     ::
)
:: 执行指定的js,并传入参数
"%NODE_EXE%" "index.js" %*

然后把bat文件路径添加到PATH环境变量中。
在index.js父目录下打开cmd,并执行:

创建bat文件,把bat路径添加到PATH中过程是复杂了点,还好npm可以帮我们做这些事。

二、npm与命令行工具

先初始化个npm项目

2.1 package.json-bin配置

【创建bat文件,把bat路径添加到PATH中】这些固定的工作可以由npm帮我们完成。package.json中有个bin字段配置:

bin: {
"commandName1": "path/to/executableFile1",  // 路径相对于package.json的目录
"commandName2": "path/to/executableFile2",
}

可执行文件可以是js文件或者无扩展名的文本文件,并且文件开头第一行是"#!/usr/bin/env node"。在安装包时npm就会根据bin配置生成对应的脚本(bat 或者 shell)。如果可执行文件的第一行不是"#!/usr/bin/env node",则生成的脚本文件只是简单的指向bin配置的可执行文件。

2.2 举例:

Step1:创建package.json文件,并配置bin字段。

package.json:

"bin":{
      "cli-demo": "./bin/cli-demo"
  }

Step2:在和package.json相同的目录下创建bin目录,在bin目录中添加cli-demo文本文件。
./bin/cli-demo:

#!/usr/bin/env node
console.log("heheh");

Step3:发布包(前提在控制台登录npm账户)

npm login
npm publish

如果没有报错提示的化,那就说明发布包成功了,接下来就可以被其他人引用了。
Step4:安装包

npm i -g cli-demo

查看下安装目录中生成的脚本文件:cli-demo.bat

@IF EXIST "%~dp0
ode.exe" (
  "%~dp0
ode.exe"  "%~dp0
ode_modulescli-demoincli-demo" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0
ode_modulescli-demoincli-demo" %*
)

文件内容就是调用node执行bin配置的文件。
Step5:执行命令

cli-demo

2.3 npm干了什么

A:根据bin字段配置,生成脚本文件(bat for window, shell for unix)。

脚本名称:等于bin字段的属性名字
脚本内容:调用node名字执行bin字段对象属性值指定的文件

B:把生产的脚本文件放在指定目录中

全局安装:prefix/
本地安装:./node_module/.bin/
三、扩展

一般一个命令由三部分构成:命令名称 选项 参数。
命名名称:指定运行的命名
选项:修改命令的操作行为
参数:传给命令运行的参数
处理选项和参数可以使用其他库,如CommandJS。

参考

用Node.js创建命令行工具

npm-bin配置

Command-line utilities with Node.js

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90074.html

相关文章

  • 用webpack写个现代的JavaScript包

    摘要:这里我们可以尝试运行一下命令尝试能否构建成功,成功的情况下在目录下会生成的文件。在添加调试代码打开调试面板在下拉选项中选择添加配置或者直接创建并打开文件使用了解相关属性。 webpack 作为目前主流的构建工具,其较快的版本迭代和复杂的配置方式,使得每次开发前不得不规划相当部分时间来调试。这里将记录整个环境的搭建过程,为新手提供基础思路。 就像我在开发vue-sitemap时一样,构建...

    yhaolpz 评论0 收藏0
  • 快速构建一个测试web项目

    摘要:用初始化一下,就会为你创建一个,用来管理你的依赖包,命令配置。还是不清除的可以去我的上看一下,很水的一个项目,别喷我。 单纯的运行一段js逻辑的话就不需要构建测试项目,直接写个js,node命令行运行一下就可以了,但是往往阅读一段他人的源码想要自己测试一下就没办法这样子,因为别人会依赖模块,会操作浏览器dom等等,所以自己写一个测试小demo有时候就很有用处。 nodejs里面又没有什...

    baukh789 评论0 收藏0
  • 分分钟教你用node.js写个爬虫

    摘要:爬虫介绍二爬虫的分类通用网络爬虫全网爬虫爬行对象从一些种子扩充到整个,主要为门户站点搜索引擎和大型服务提供商采集数据。 分分钟教你用node.js写个爬虫 写在前面 十分感谢大家的点赞和关注。其实,这是我第一次在segmentfault上写文章。因为我也是前段时间偶然之间才开始了解和学习爬虫,而且学习node的时间也不是很长。虽然用node做过一些后端的项目,但其实在node和爬虫方面...

    fanux 评论0 收藏0
  • 从0开始的Vue全栈项目(仿网易云音乐App)

    摘要:转行前端一年多,之前一直忙于写业务代码,刚好近期不忙,就想写一个完全属于自己的项目。本项目因为时间关系暂时只做了部分功能,但是有空会继续更新的。项目未完成的部分后续会逐渐完成。 转行前端一年多,之前一直忙于写业务代码,刚好近期不忙,就想写一个完全属于自己的项目。原本打算用react来做的,但是估计边翻api边写可能会花特别长的时间,所以打算这个项目完成后写个react的项目。本项目因为...

    YFan 评论0 收藏0
  • 从0开始的Vue全栈项目(仿网易云音乐App)

    摘要:转行前端一年多,之前一直忙于写业务代码,刚好近期不忙,就想写一个完全属于自己的项目。本项目因为时间关系暂时只做了部分功能,但是有空会继续更新的。项目未完成的部分后续会逐渐完成。 转行前端一年多,之前一直忙于写业务代码,刚好近期不忙,就想写一个完全属于自己的项目。原本打算用react来做的,但是估计边翻api边写可能会花特别长的时间,所以打算这个项目完成后写个react的项目。本项目因为...

    ziwenxie 评论0 收藏0

发表评论

0条评论

QLQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<