vue-cli的項目目錄
如下圖,由之前文章介紹,npm安裝過程中,可以利用package.json中bin字段的配置,將bin目錄下的命令文件軟連到全局命令。也就是說在/usr/local/bin下生成了四個軟連命令:vue、vue-build、vue-list、vue-init。
vue命令的源碼
1 2 3 4 5 6 7 8 9 | #!/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來實現(xiàn)。commander的主要方法:
(1)parse:用于解析process.argv,將process.argv.slice(2)賦值給program.args;
(2)command:創(chuàng)建子命令,子命令的使用方法是command <subcommand> [options],實際調(diào)用的命令是command-subcommand,如使用命令行執(zhí)行vue list,其實是在執(zhí)行vue-list全局命令;
(3)options:主要設(shè)置命令的參數(shù),同時提供參數(shù)對應(yīng)的說明文檔,默認(rèn)提供的option是--help。
vue-init子命令的實現(xiàn)
vue-init的主要功能是拉取指定git目錄下的項目模板文件(官方或自制)到指定目錄下,用法如下
1 | $ vue init <template-name> <project-name> |
這里仍需要解析process.argv,所以在vue-init中又引入了commander.js,生成了一個program
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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() |
接下來就是要實現(xiàn)拉取模板文件,經(jīng)處理后,放置到產(chǎn)出目錄下,具體如何實現(xiàn)的,接下來會有專門的文章介紹vue-cli命令的實現(xiàn)原理,敬請期待!
http://www.cnblogs.com/wmhuang/p/7092658.html