我的编程空间,编程开发者的网络收藏夹
学习永远不晚

node如何实现简单的脚手架浅析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

node如何实现简单的脚手架浅析

脚手架的实现原理无外乎:

通过命令行交互询问用户问题

根据用户的答案生成相应的项目结构

脚手架很多,比如特定语言封装好的脚手架集成方案:react-app,vue-cli,还有通用的脚手架工具Yeoman,包括项目内好用的模板生成工具plop等,今天我们来说一下用nodejs生成一个简单的脚手架

  • 首先创建文件夹,cd到当前文件夹,并且初始化一个package.json文件
 mkdir sample-saclfolding 
 cd sample-saclfolding 
 yarn init 
  • 在项目根目录下创建cli.js文件,并且在package.json中把cli.js设为入口文件

  • 在根目录下创造模板文件夹,并增加模板文件

  • node里面的命令行交互需要借助inquirer,在项目内安装inquirer
yarn add inquirer --dev

5.需要借助ejs渲染文件,在项目内安装ejs

yarn add ejs --dev

6.在cli.js里面增加脚手架执行的业务逻辑

#! /usr/bin/env node 
//头部必须加,用于指明这个脚本文件的解释程序,增加这一行是为了指定用node执行脚本文件

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为用户输入的最终结果,返回:{name:'你输入的答案'}
    const tmplDir=path.join(__dirname,'templates') //模板的路径
    const destDir=process.cwd(); //目标路径
    fs.readdir(tmplDir,((err, files) => { //fs.readdir读取路径文件夹里的所有文件
        if(err) throw err
        files.forEach((file)=>{ //循环文件夹内所有文件
            ejs.renderFile(path.join(tmplDir,file),answer, (err,result)=>{//根据文件渲染模板
                fs.writeFileSync(path.join(destDir,file),result)//根据 路径,内容 写入文件
            })
        })
    })
    )
})
  • 把模板文件内用到name的地方用<%= name %>替代

  • 在项目内运行以下命令,把定义好的脚手架链到全局。
yarn link
  • 新建文件夹,进入到新建的文件夹内,运行项目名命令可以生成文件模板,比如示例项目名为 sample-scaffolding,运行 sample-scaffolding即可
mkdir demo
cd demo
sample-scaffolding

10.输入name的值,则生成了模板文件。模板文件里的name为你输入的value

总结

到此这篇关于node如何实现简单脚手架的文章就介绍到这了,更多相关node实现脚手架内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

node如何实现简单的脚手架浅析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解如何实现一个简单的Node.js脚手架

原因在工作中,需要开发一个脚手架,用于给相关用户提供相关的开发便利性。 适合人群对前端、Node操作有一定的了解,同时向了解脚手架开发过程或者需要自己实现一个脚手架的开发者。 目标开发一个简单的脚手架,能够提供给用户进行安装。能够输出相关提
2022-06-04

VUE脚手架框架编写简洁的登录界面的实现

本文主要介绍了VUE脚手架框架编写简洁的登录界面的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

react脚手架配置代理如何实现

这篇文章主要介绍“react脚手架配置代理如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react脚手架配置代理如何实现”文章能帮助大家解决问题。方法一在package.json 中追加如下
2023-07-05

详解Elasticsearch如何实现简单的脚本排序

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎,可以为所有类型的数据提供近乎实时的搜索和分析。本文主要介绍了Elasticsearch如何实现简单的脚本排序,感兴趣的可以了解一下
2023-01-13

JavaScript如何实现简单的词法分析器

这篇文章主要介绍了JavaScript如何实现简单的词法分析器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript如何实现简单的词法分析器文章都会有所收获,下面我们一起来看看吧。什么是词法分析器?
2023-07-05

如何利用python实现简单的情感分析

今天小编给大家分享一下如何利用python实现简单的情感分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 数据导入及预处
2023-07-02

JavaScript如何实现简单的Markdown语法解析器

本篇内容主要讲解“JavaScript如何实现简单的Markdown语法解析器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现简单的Markdown语法解析器”吧!什么
2023-07-05

如何分析一种简单JDBC连接池的实现

如何分析一种简单JDBC连接池的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JDBC(Java Data Base Connectivity,java数据库连接)是一
2023-06-17

Java如何实现角色权限后台脚手架系统

这篇文章将为大家详细讲解有关Java如何实现角色权限后台脚手架系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Springboot框架+myBaits-Plus+MySQL实现的角色权限后台管理脚手架系
2023-06-22

js如何实现简单实用的AJAX

这篇文章主要介绍了js如何实现简单实用的AJAX,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JS是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被
2023-06-08

Java如何实现简单的排序

这篇文章主要介绍Java如何实现简单的排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的
2023-06-25

vue如何实现简单的购物车

今天小编给大家分享一下vue如何实现简单的购物车的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图如下