用NODE寫一個腳手架工具

首先拋出一個問題,你們在使用webpack,webpack-dev-server,babel-cli,vue-cli,npm這類工具的時候有沒有思考過一個問題?爲何我全局安裝這個模塊以後,就能在shell中使用webpack,babel這些命令?vue

解答:之因此能使用webpack這些命令,意味着我在npm install webpack -g時,有個可執行文件添加到了個人環境變量中,以下圖:

圖片描述

因而我在shell中敲擊webpack命令,系統就會在環境變量中查找webpack,而後執行link file指向的webpack bin目錄下的webpack.js 文件。接着就能夠順利的執行webpack相關的功能,編譯打包靜態文件........node

那麼讓咱們開始用node寫一個CLI工具!!!webpack

第一步:首先要學會發佈一個npm包

  • 很簡單,到npmjs註冊一個帳號,註冊好以後,到你的項目下git

  • 執行 npm login,按提示操做便可github

  • 接着 npm publish,進入你想要發佈的包下,執行該命令便可web

  • 不出意外,就成功發佈了一個npm包vue-cli

第二步:那麼如何全局安裝這個包的時候,將可執行文件註冊到環境變量?

重點就是,package.json,bin配置能夠將開發者但願執行的腳本註冊到環境變量,順便把個人腳手架的項目結構po出來,源碼: https://github.com/zhentaoo/p...
圖片描述shell

在執行 npm install -g poke-ball以後,就能在環境變量中找到link file kk
如圖:
圖片描述
此時當我在shell中敲擊kk的時候,就會執行對應的kk文件,因而就有了接下來的一系列操做.npm

第三步:須要注意的問題

在寫腳手架工具中,容易混亂的一個問題就是路徑,由於操做文件的過程當中,你可能須要把CLI中的模版文件複製到當前項目中。所以就出現了2個路徑
分別是json

  • process.cwd() 當前工做目錄,也就是你的當前項目的路徑。

  • __dirname 是執行的源文件的所在路徑,也就是bin文件所在的path,也就是腳手架中的源文件路徑。

第四步:優化的點

  1. seed若是和CLI集成在一塊兒,假如seed須要升級,那麼CLI也不得不升級,全部使用方都不得不從新安裝CLI。能夠把二者拆開。

  2. CLI在new一個seed的時候,使用 git clone,但若是seed版本過多,seed的git倉庫勢必很大.使用git clone --depth 1,只clone最新版本會是個不錯的方案.以後在rm -rf .git

相關文章
相關標籤/搜索