如何使用Node.js编写命令工具——以vue-cli为例

vue-cli全局安装之后,提供了vue命令和vue init、vue list、vue build三个子命令,通过命令可以搭建基于vue.js的脚手架项目。本文简单介绍一下这些命令是如何实现的。

vue-cli的项目目录

如下图,由之前文章介绍,npm安装过程中,可以利用package.json中bin字段的配置,将bin目录下的命令文件软连到全局命令。也就是说在/usr/local/bin下生成了四个软连命令:vue、vue-build、vue-list、vue-init。

  

vue命令的源码

#!/usr/bin/env node

require(‘commander‘)
  .version(require(‘../package‘).version)
  .usage(‘<command> [options]‘)
  .command(‘init‘, ‘generate a new project from a template‘)
  .command(‘list‘, ‘list available official templates‘)
  .command(‘build‘, ‘prototype a new project‘)
  .parse(process.argv)

  

该命令采用commander.js来实现。commander的主要方法:

(1)parse:用于解析process.argv,将process.argv.slice(2)赋值给program.args

(2)command:创建子命令,子命令的使用方法是command <subcommand> [options],实际调用的命令是command-subcommand,如使用命令行执行vue list,其实是在执行vue-list全局命令;

(3)options:主要设置命令的参数,同时提供参数对应的说明文档,默认提供的option是--help。

vue-init子命令的实现

vue-init的主要功能是拉取指定git目录下的项目模板文件(官方或自制)到指定目录下,用法如下

$ vue init <template-name> <project-name>

  

这里仍需要解析process.argv,所以在vue-init中又引入了commander.js,生成了一个program

program
    .usage(‘<template-name> [project-name]‘)
    .option(‘--offline‘, ‘use cached template‘)

/**
 * Help.
 */

function help () {
    program.parse(process.argv)
    if (program.args.length < 1) return program.help()
}
help()

  

接下来就是要实现拉取模板文件,经处理后,放置到产出目录下,具体如何实现的,接下来会有专门的文章介绍vue-cli命令的实现原理,敬请期待!

时间: 2024-10-13 15:22:52

如何使用Node.js编写命令工具——以vue-cli为例的相关文章

基于Node.js的自动化工具Gulp

基于Node.js的自动化工具Gulp What is gulp? gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,不仅可以很愉快的编写代码,而且大大提高我们的工作效率. gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript.coffee.sass.less.html/image.css 等文件的测试.检查.合并.压缩.格式化.浏览器自动刷新.部

为Node.js编写组件的几种方式

本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8 API,编写起来比较麻烦,是js强相关的,不容易支持其它脚本语言. (2)swig为第三方支持,一个强大的组件开发工具,支持为python.lua.js等多种常见脚本语言生成C++组件

在node.js的命令行里通过npm安装phonegap出现connect etimeout问题

在node.js的命令行里(Node.js command prompt)执行npm install -g phonegap命令安装phonegap3.0,出现etimeout问题. 我是通过设置代理访问外网,而命令行里没有设置代理,所以在命令行里无法连接网络,无法安装成功.出现这种情况需要在命令行里设置代理. windows的命令行下设置网络代理,在命令行下,执行如下命令: set http_proxy=http://proxy.com:port/ set http_proxy_user=us

Node.js编写be的流程(express)

Node.js编写be的流程 1.当前项目目录下首先安装express 2.自动生成express插件结构 express -e 3.执行完前两步的效果      4.此时的package.json 5.给package.json配置你需要用到的其他插件,这里我配置了 mongoose(数据库):yarn add mongoose moment(时间处理):yarn add moment nodemon(监听自动刷新):yarn add nodemon 原文地址:https://www.cnbl

使用Node.js构建命令行工具

使用Node.js和npm构建脚本或命令行工具. 一.包装shell命令 第一步:创建一个npm项目 npm init; 第二步:创建一个js文件(index.js),包含要运行的脚本 !/usr/bin/env node console.log('Hello, world!'); 需要注意的是,需要添加片段标识符"!/usr/bin/env node",告知脚本使用Node执行. 第三步:在package.json文件中补充bin部分 { ... "author"

NTVS:把Visual Studio变成Node.js IDE 的工具

NTVS(Node.js Tools for Visual Studio) 运行于VS2012或者VS2013.一些node.js的爱好者已经从PTVS(Python Tools for Visual Studio)转向并开始为VS做些node工具.同时,PTVS团队也在node.js整合上下功夫,于是他们都专注于NTVS使之成为一个社区项目.NTVS是由给你带来PTVS的相同团队开发的,并且得到了来自Red Gate的Bart Read(他开发了Node Packaged Modules图形用

20160109 Node.js 常用开发工具的使用

http://www.jikexueyuan.com/course/997.html 开发工具的使用 Oracle VM VirtualBox虚拟机的网络设置 解决问题:在不同的地方使用虚拟机,虚拟机的IP地址会不停的变化,又不想修改虚拟机的host文件. 找到"网络",不使用桥接,而是使用NAT模式,这样VirtualBox会产生一个虚拟的路由器,由虚拟路由器再与物理机所在的网络通信. 连接方式---网络地址转换NAT---端口转发 点+号 把主机的22号端口(一般情况不会用到)转发

nodejs学习笔记Node.js 调试命令

3.4  调试        47 下面是一个简单的例子: $ node debug debug.js < debugger listening on port 5858 connecting... ok break in /home/byvoid/debug.js:11 var a = 1; 2 var b = 'world'; 3 var c = function (x) { debug> n break in /home/byvoid/debug.js:21 var a = 1; 2 v

Sublime Text3 配置Node.js运行命令

- 在Sublime Text中可以很容易配置新的编译运行命令,下面的截图是汉化版的中文菜单,英文菜单请直接对照. 首先需要在本地安装Node,默认的Node会加入到系统的环境变量,这样执行Node命令时就不需要到安装路径下执行了. 选择"新编译系统",在打开文件中插入以下代码: { "cmd": ["node", "$file"], "file_regex": "^[ ]*File \"