首页 > 其他分享 >脚手架工具

脚手架工具

时间:2024-04-13 18:11:07浏览次数:28  
标签:src name Generator 文件 js 脚手架 工具 模板

常用的脚手架工具

Create React App
Vue CLI
Angular CLI
Next.js
Nuxt.js
Express Generator
Create React Native App
Electron Forge
Vite可用于构建 vite React等项目。

Yemon

安装yarnnpm install -g yarn

不同的generator生成不同的项目
不需要所有文件,只需要类似babel或者readme.md,若生成node项目,部分需要使用命令yo node:cligenerator子集的生成器

可以通过配置对应的镜像来提高下载速度,例如node_sass

Yemon的使用过程

用Yeoman来开发自己的脚手架-自定义generator

创建Generator模块本质上就是一个npm模块
1.创建文件夹,命名generator-
2.初始化package.json
3.安装yeoman-generator基类,里面有生成器函数还有工具函数
4.创建文件,文件目录结构如下所示:
image
最简单的yeoman生成器的实现-实现写入一个名为temp.txt的文件内容,内容为随机数

// 此文件作为 Generator 的核心入口
// 需要导出一个继承自 Yeoman Generator 的类型
// Yeoman Generator 在工作时会自动调用我们在此类型中定义的一些生命周期方法
// 我们在这些方法中可以通过调用父类提供的一些工具方法实现一些功能,例如文件写入
const Generator = require('yeoman-generator')
module.exports = class extends Generator{
	writing(){
		//Yeoman 自动在生成文件阶段调用此方法
		   // // 我们这里尝试往项目目录中写入文件
		 this.fs.write(
		   this.destinationPath('temp.txt'), //文件路径
		   Math.random().toString()   //文件内容
		 )
	}
}

在generators/app/index.js,之后用npm link链接到全局,新建一个文件夹,命令行输入yo sample即可在文件夹中生成temp.txt文件

根据模板创建文件

写在上述writing方法中,模板文件内部可以使用 EJS 模板标记输出数据

    // // 通过模板方式写入文件到目标目录

    // // 模板文件路径
     const tmpl = this.templatePath('foo.txt')
    // // 输出目标路径
     const output = this.destinationPath('foo.txt')
    // // 模板数据上下文
     const context = { title: 'Hello zce~', success: false }

     this.fs.copyTpl(tmpl, output, context)//fs中带的渲染模板的方法copyTpl

用命令行交互的方式将内容写入文件

prompting () {
    // Yeoman 在询问用户环节会自动调用此方法
    // 在此方法中可以调用父类的 prompt() 方法发出对用户的命令行询问
    return this.prompt([
      {
        type: 'input',
        name: 'name',
        message: 'Your project name',
        default: this.appname // appname 为项目生成目录名称
      }
    ])
    .then(answers => {
      // answers => { name: 'user input value' }
      this.answers = answers
    })
  }
  writing(){
      // 模板文件路径
    const tmpl = this.templatePath('bar.html')
    // 输出目标路径
    const output = this.destinationPath('bar.html')
    // 模板数据上下文
    const context = this.answers

    this.fs.copyTpl(tmpl, output, context)
  }

创建自定义Vue Generator

批量写入文件放到template文件夹下,然后在可能发生变化的地方通过模板引擎挖坑,示例是都挖坑了name属性,重点是把每一个文件的目录路径定义上,要想有多条输入需要this.prompt()方法的数组参数中添加特定功能的对象

  writing () {
    // 把每一个文件都通过模板转换到目标路径

    const templates = [
      '.browserslistrc',
      '.editorconfig',
      '.env.development',
      '.env.production',
      '.eslintrc.js',
      '.gitignore',
      'babel.config.js',
      'package.json',
      'postcss.config.js',
      'README.md',
      'public/favicon.ico',
      'public/index.html',
      'src/App.vue',
      'src/main.js',
      'src/router.js',
      'src/assets/logo.png',
      'src/components/HelloWorld.vue',
      'src/store/actions.js',
      'src/store/getters.js',
      'src/store/index.js',
      'src/store/mutations.js',
      'src/store/state.js',
      'src/utils/request.js',
      'src/views/About.vue',
      'src/views/Home.vue'
    ]

    templates.forEach(item => {
      // item => 每个文件路径
      this.fs.copyTpl(
        this.templatePath(item),
        this.destinationPath(item),
        this.answers
      )
    })
  }

发布generator

1.首先将包发布到git仓库
新建.gitignore文件来添加让node_modules忽略的命令
echo node_modules > .gitignore
2.yarn pulish --registry=https://registry.yarnpkg.com
不能使用淘宝镜像源,需要修改
3.添加yemon-generator关键词,yemon官方就会发现你的包。

plop脚手架工具

创建项目中特定类型的工具
image

// Plop 入口文件,需要导出一个函数
// 此函数接收一个 plop 对象,用于创建生成器任务

module.exports = plop => {
  plop.setGenerator('component', {//generator名
    description: 'create a component',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: 'component name',
        default: 'MyComponent'
      }
    ],
    actions: [
      {
        type: 'add', // 代表添加文件
        path: 'src/components/{{name}}/{{name}}.js',//代表添加到哪里
        templateFile: 'plop-templates/component.hbs'//代表模板文件路径
      },
      {
        type: 'add', // 代表添加文件
        path: 'src/components/{{name}}/{{name}}.css',
        templateFile: 'plop-templates/component.css.hbs'
      },
      {
        type: 'add', // 代表添加文件
        path: 'src/components/{{name}}/{{name}}.test.js',
        templateFile: 'plop-templates/component.test.hbs'
      }
    ]
  })
}

yarn plop component命令来启动

标签:src,name,Generator,文件,js,脚手架,工具,模板
From: https://www.cnblogs.com/zhixy/p/18131400

相关文章

  • 原型设计工具比较及实践
    墨刀适用领域:移动应用和网页设计:墨刀是一个全面的设计工具,适用于移动应用和网页的设计适合快速原型构建和用户体验测试:墨刀提供了丰富的工具和资源,使得快速构建原型变得容易。它也适合用于用户体验测试,因为用户可以直接在手机上查看原型。便于协作和分享,适合团队项目:墨刀支持......
  • OB导数工具使用经验分享
    一、前言OBDUMPER/OBLOADER是OceanBase官方推出的数据导出导入工具,可以用于OB租户间的数据迁移,对OB租户进行逻辑备份。不同于MySQL的MyDumper是C语言开发,OBDUMPER/OBLOADER是由java语言开发,因此它具备跨平台兼容性(x86/arm)。关于OBDUMPER/OBLOADER是一个功能非常丰富的工具,其使用......
  • 原型设计工具比较及实现
    原型设计工具比较及实践目录一,原型设计工具比较1.墨刀2.Axure3.Mockplus二,原型设计1.主题名称2.功能3.界面设计考虑因素4.切换界面一,原型设计工具比较1.墨刀使用领域​墨刀是界面原型设计工具,用于创建应用程序、网站和其他软件的交互原型。......
  • 原型设计工具比较及实现
    1、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点1.墨刀优点:用户界面:墨刀的用户界面非常直观和易用,适合新手和非技术背景的设计师。协作功能:支持多用户实时在线编辑和项目管理,便于团队协作。资源丰富:内置了大量的模板和元件库,可以快速拖拽来......
  • 性能监控工具 grafana + prometheus + node_exporter 下载配置
        grafana   prometheus: 时序数据库,存储数据的   node_exporter: 收集数据(收集监控数据)     node_exporter 收集linux**系统资源利用**数据   这个解决方案中,node_exporter是可变的,是根据你要收集**哪些数据来进行选择**一、安装解压配置pr......
  • 原型设计工具比较及实践
    一、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点。适用领域:1.墨刀:墨刀适用于快速创建交互式原型,特别适合小型项目和初期设计阶段。它提供了简洁易用的界面和丰富的组件库,适合设计师、产品经理和开发人员之间的快速协作。2.Axure:AxureRP适用于复杂......
  • 原型设计工具比较及实践
    一、分析1、Mockplushttps://www.mockplus.cn/Mockplus(摩客)是一款简洁快速的原型图设计工具。适合软件团队、个人在软件开发的设计阶段使用。其低保真、无需学习、快速上手、功能够用。并能够很好地表达自己的设计。2、Axurehttps://www.axure.com/AxureRP是一个专业的快速......
  • 原型设计工具比较及实践
    一、对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点1.墨刀:适用领域:快速原型设计团队协作移动应用设计优点:界面简洁,易于上手,适合初学者或快速原型设计需求。在线协作功能强大,支持多人实时编辑,适合团队协作。提供丰富的模板和组件库,能够快速构建出......
  • 原型设计工具比较及实现
    以下是对墨刀、Axure和Mockplus的对比分析:墨刀适用领域:快速原型设计:墨刀提供了简单易用的界面,适合快速原型设计和迭代。团队协作:墨刀支持多人实时协作,团队成员可以即时查看和编辑原型。云端存储:墨刀的云端存储功能使得原型可以轻松地分享和访问。优点:易于上手:用户界面简......
  • 原型设计工具比较及实践
    一、对墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点的分析1.墨刀(Modao)适用领域:快速原型设计移动应用和网页设计团队协作优点:界面简洁,上手快,适合新手支持多人实时在线协作提供丰富的模板和组件库缺点:功能相对有限,不适合复杂的交互设计导出和分享功......