先问一个问题,在使用webpack、webpack-dev-server、babel-cli、vue-cli、npm等工具的时候有没有想过一个问题?为什么我全局安装这个模块后,在shell中可以使用webpack和babel命令?答:我之所以可以使用webpack的这些命令,是因为我在运行npminstallwebpack-g的时候,在我的环境变量中添加了一个可执行文件,如下图:所以我在shell中输入了webpack命令,并且系统会在环境变量中查找webpack,然后执行链接文件指向的webpackbin目录下的webpack.js文件。然后就可以流畅的执行webpack相关的功能,编译打包静态文件了……那我们就开始用node写一个CLI工具吧!!!第一步:首先,学习如何发布一个npm包是非常简单的。使用npmjs注册一个帐户。注册后,在你的项目下执行npmlogin,根据提示进行npmpublish,输入你要发布的包,执行这个命令,不出意外就可以成功发布一个npm包了。第二步:那么在全局安装这个包的时候,如何将可执行文件注册到环境变量中呢?重点是,package.json,bin配置可以把开发者要执行的脚本注册到环境变量中,顺便贴一下我脚手架的项目结构,源码:https://github.com/zhentaoo/p...in执行npminstall-gpoke-ball后,可以在环境变量中找到链接文件kk如图:这时候我在shell中输入kk,对应的kk文件就会被执行,于是就有了下面的一系列操作。第三步:需要注意的问题在编写脚手架工具时,最容易混淆的问题之一就是路径,因为在操作文件的过程中,可能需要将CLI中的模板文件复制到当前项目中。所以有2个路径,分别是process.cwd()的当前工作目录,也就是你当前项目的路径。__dirname是执行的源文件的路径,也就是bin文件的路径,也就是源文件在脚手架中的路径。第四步:如果优化后的点种子集成了CLI,如果种子需要升级,CLI也要升级,所有用户都得重新安装CLI。两者可以分开。CLI在创建新种子时使用gitclone,但是如果种子版本太多,种子的git仓库势必很大。使用gitclone--depth1,只克隆最新版本将是一个很好的解决方案。之后,使用rm-rf.git
