起首抛出一个题目,人人在运用webpack,webpack-dev-server,babel-cli,vue-cli,npm这类东西的时刻有无思考过一个题目?为何我全局装置这个模块以后,就能在shell中运用webpack,babel这些敕令?
解答:之所以能运用webpack这些敕令,意味着我在npm install webpack -g时,有个可实行文件增加到了我的环境变量中,如下图:
因而我在shell中敲击webpack敕令,体系就会在环境变量中查找webpack,然后实行link file指向的webpack bin目次下的webpack.js 文件。接着就能够顺遂的实行webpack相干的功用,编译打包静态文件……..
那末让我们最先用node写一个CLI东西!!!
第一步:起首要学会宣布一个npm包
很简单,到npmjs注册一个账号,注册好以后,到你的项面前目今
实行
npm login
,按提醒操纵即可接着
npm publish
,进入你想要宣布的包下,实行该敕令即可不出不测,就胜利宣布了一个npm包
第二步:那末怎样全局装置这个包的时刻,将可实行文件注册到环境变量?
重点就是,package.json,bin设置能够将开发者愿望实行的剧本注册到环境变量,顺便把我的脚手架的项目构造po出来,源码: https://github.com/zhentaoo/p…
在实行 npm install -g poke-ball
以后,就能在环境变量中找到link file kk
如图:
此时当我在shell中敲击kk的时刻,就会实行对应的kk文件,因而就有了接下来的一系列操纵.
第三步:须要注重的题目
在写脚手架东西中,轻易杂沓的一个题目就是途径,由于操纵文件的过程当中,你能够须要把CLI中的模版文件复制到当前项目中。因而就涌现了2个途径
分别是
process.cwd() 当前工作目次,也就是你确当前项目标途径。
__dirname 是实行的源文件的地点途径,也就是bin文件地点的path,也就是脚手架中的源文件途径。
第四步:优化的点
seed如果和CLI集成在一起,如果seed须要晋级,那末CLI也不能不晋级,一切运用方都不能不重新装置CLI。能够把二者拆开。
CLI在new一个seed的时刻,运用 git clone,但如果seed版本过量,seed的git堆栈必将很大.运用git clone –depth 1,只clone最新版本会是个不错的计划.以后在rm -rf .git