node如何實現(xiàn)簡單的腳手架淺析
腳手架的實現(xiàn)原理無外乎:
通過命令行交互詢問用戶問題
根據(jù)用戶的答案生成相應(yīng)的項目結(jié)構(gòu)
腳手架很多,比如特定語言封裝好的腳手架集成方案:react-app,vue-cli,還有通用的腳手架工具Yeoman,包括項目內(nèi)好用的模板生成工具plop等,今天我們來說一下用nodejs生成一個簡單的腳手架
- 首先創(chuàng)建文件夾,cd到當(dāng)前文件夾,并且初始化一個package.json文件
mkdir sample-saclfolding cd sample-saclfolding yarn init
- 在項目根目錄下創(chuàng)建cli.js文件,并且在package.json中把cli.js設(shè)為入口文件
- 在根目錄下創(chuàng)造模板文件夾,并增加模板文件
- node里面的命令行交互需要借助inquirer,在項目內(nèi)安裝inquirer
yarn add inquirer --dev
5.需要借助ejs渲染文件,在項目內(nèi)安裝ejs
yarn add ejs --dev
6.在cli.js里面增加腳手架執(zhí)行的業(yè)務(wù)邏輯
#! /usr/bin/env node //頭部必須加,用于指明這個腳本文件的解釋程序,增加這一行是為了指定用node執(zhí)行腳本文件 const inquirer = require('inquirer'); const path = require('path'); const ejs = require('ejs'); const fs = require('fs'); inquirer.prompt([ //inquirer.prompt方法命令行交互 { type:'input', //方式:輸入 name:'name', //得到data的key值為'name' message:'your project name' //詢問用戶的問題 } ]).then(answer=>{ //answer為用戶輸入的最終結(jié)果,返回:{name:'你輸入的答案'} const tmplDir=path.join(__dirname,'templates') //模板的路徑 const destDir=process.cwd(); //目標(biāo)路徑 fs.readdir(tmplDir,((err, files) => { //fs.readdir讀取路徑文件夾里的所有文件 if(err) throw err files.forEach((file)=>{ //循環(huán)文件夾內(nèi)所有文件 ejs.renderFile(path.join(tmplDir,file),answer, (err,result)=>{//根據(jù)文件渲染模板 fs.writeFileSync(path.join(destDir,file),result)//根據(jù) 路徑,內(nèi)容 寫入文件 }) }) }) ) })
- 把模板文件內(nèi)用到name的地方用<%= name %>替代
- 在項目內(nèi)運行以下命令,把定義好的腳手架鏈到全局。
yarn link
- 新建文件夾,進(jìn)入到新建的文件夾內(nèi),運行項目名命令可以生成文件模板,比如示例項目名為 sample-scaffolding,運行 sample-scaffolding即可
mkdir demo cd demo sample-scaffolding
10.輸入name的值,則生成了模板文件。模板文件里的name為你輸入的value
總結(jié)
到此這篇關(guān)于node如何實現(xiàn)簡單腳手架的文章就介紹到這了,更多相關(guān)node實現(xiàn)腳手架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用node實現(xiàn)一個批量重命名文件的函數(shù)
這篇文章主要給大家介紹了關(guān)于利用node實現(xiàn)一個批量重命名文件的函數(shù)的相關(guān)資料,文中通過示例示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12nodejs配置express服務(wù)器運行自動打開瀏覽器詳細(xì)步驟
在nodejs中使用express來搭建框架可以說是非常的簡單方便,下面這篇文章主要給大家介紹了關(guān)于nodejs配置express服務(wù)器運行自動打開瀏覽器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01詳解NodeJs項目 CentOs linux服務(wù)器線上部署
這篇文章主要介紹了NodeJs項目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09node.js使用net模塊創(chuàng)建服務(wù)器和客戶端示例【基于TCP協(xié)議】
這篇文章主要介紹了node.js使用net模塊創(chuàng)建服務(wù)器和客戶端,結(jié)合實例形式分析了node.js使用net模塊實現(xiàn)TCP客戶端與服務(wù)器端通信的相關(guān)操作技巧,需要的朋友可以參考下2020-02-02