zoukankan      html  css  js  c++  java
  • 创建前端简易脚手架

    1.初始化    yarn init

    2.在package.json 添加入口  "bin": "cli.js"

    {
      "name": "sample-scaffolding",
      "version": "1.0.0",
      "main": "index.js",
      "bin": "cli.js",
      "license": "MIT",
      "dependencies": {
        "ejs": "^3.1.6",
        "inquirer": "^8.0.0"
      }
    }

    3.根目录创建 cli.js

    #!/usr/bin/env node
    
    //node CLI应用如空文件必须要有这样一个文件头
    //如果是Linux 或者 macOs 系统下还需要修改此文件的读写权限为 755
    //具体就是通过 chmod 755 cli.js 实现修改
    
    // console.log("cli")
    
    
    //脚手架的工作过程:
    //1.  通过命令行交互询问用户问题   inquirer工具实现(发起命令行询问)
    //2. 根据用户的回答的结果生成文件
    
    const inquirer = require("inquirer")
    const fs = require('fs')
    const path = require('path')
    const ejs = require('ejs')
    
    inquirer.prompt([
        {
            type: "input",
            name: "name",
            message: "project name?"
        }
    ])
    .then(anwsers => {
        // console.log(anwsers)
        //根据提示生成文件
    
        //模板文件
        const tmplDir = path.join(__dirname, "templates")
        console.log('tmplDir----',tmplDir)
        //目标文件
        const destDir = process.cwd()
        console.log('destDir---', destDir)
        //
        fs.readdir(tmplDir, (err, files) => {
            if(err) throw err
            files.forEach(file => {
                // console.log(file)
                //通过模板引擎渲染  ejs 模板引擎
                ejs.renderFile(path.join(tmplDir, file), anwsers, (err, result) =>{
                    if(err) throw err
    
                    console.log(result)
                    //写入到目标文件
                    fs.writeFileSync(path.join(destDir, file), result)
                })
            })
        })
    
    })

    4.创建模板文件及对应文件夹 templates/index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title><%=name%></title>
    </head>
    <body>
        
    </body>
    </html>

    5.将项目资源放在内存当中 随时调用  根目录下执行  yarn link

    6.  执行名称生成文件在当前目录下   sample-scaffolding

    注:需要引入的的包     

    yarn add  inquirer   //发起命令行询问

    yarn add  ejs  //模板引擎 读写文件

  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/faint33/p/14736160.html
Copyright © 2011-2022 走看看