码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端搭建自己的cli脚手架, 实现前端工程化


    我们都知道create-react-app, vue-clli , 是知名的脚手架工具, 但是在我们日常开发过程中, 总是会出现公用的组件或者公共的方法, 如果每次都从项目中粘贴复制会很麻烦, 尤其是复杂一点的组件( 深有体会… 或者 你们公司有很多业务线 但是呢基本框架都是不变, 主色调, 布局, 排版等等, 这个时候就需要一个模版, 你只需要通过自己搭建的私有库 就可以一键生成

    生成脚手架代码模版, 并放到github

    你可以基于vue-cli, 或者 create-react-app 封装自己的业务代码或者组件
    然后上传到github , 可以使用脚手架工具命令从gitlab上下载模版

    在这里插入图片描述

    制作脚手架工具

    • 1.生成一个项目 : nishishui

    • 2.初始化项目:

    npm init -yes
    
    • 1

    生成package.json文件

    • 3.安装需要的模块
      commander(实现文件远程下载)
      download-git-repo(下载git仓库代码的库)

      npm i  commander download-git-repo
      
      • 1
    • 4.注册指令
      当我们要运行调试脚手架时, 通常执行 node ./bin/index.js命令, 但是我们可以使用注册对应的指令, 打开 package.json文件, 先注册下指令:

     "bin": {
        "nishishui-cli": "index.js"
      },
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    bin下的nishishui-cli就是我们注册的指令, 你可以设置自己想要的名字

    • 5 在项目根目录创建index.js文件
      index.js
    #! /usr/bin/env node
    const program = require('commander');
    const download = require('download-git-repo');
    //version 版本号
    //name 新项目名称
    program.version('1.0.3', '-v, --version')
        .command('init  ')
        .action((templateName, projectName) => {
     	if(templateName === "react") {
                console.log('clone template ...');
              // 这个下载url格式时固定的 github:${git用户名}/${仓库名称}
                download('github:zhangmin9404/react-hooks', projectName, function (err) {
                    console.log(err ? 'Error' : 'Success')
                })
            } else {
              console.error('A template name that does not exist')
            }
        });
    program.parse(process.argv);
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    其中#!/usr/bin/env node(固定第一行)必加,主要是让系统看到这一行的时候,会沿着对应路径查找 node 并执行。

    command解析输入nishishui-cli init react zmTest,init后面两个参数,一个模板名,一个项目名

    测试阶段, 为了保证nishishui-cli指令可用, 我们可以再项目下执行npm link (不用的时候可以使用npm unlink 断开)

    把脚手架工具上传到npm

    可以去npm官网注册一个
    或者可以参考一下我之前的文章 如何将自己的包发布到npm上(或者是自己/公司的私有源

    然后输入
    npm login 登录npm 账号

    npm publish 发布脚手架到npm

    在这里插入图片描述

    这个时候就可以在npm 上搜索到你发布的包的名称

    使用我们自己的脚手架工具

    全局安装脚手架工具

     npm install -g nishishui@1.0.3 
    
    • 1

    生成项目

     nishishui-cli init react zmTest
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    ok 完成! ! ! !

  • 相关阅读:
    现代中央处理器(CPU)是怎样进行分支预测的?
    AI数据标注猿知识星球私域社区开始招募啦
    【leetcode】【剑指offer Ⅱ】035. 最小时间差
    Spring(存储Bean对象五大类注解,获取Bean对象三种注入方式)
    资深腾讯架构师耗时2个月整理的Redis全套学习笔记,涵盖所有核心知识点
    Spring Boot 异步线程静态获取request对象为空 RequestContextHolder 为空 Java 异步线程获取request为空
    混淆矩阵细致理解
    学神经网络需要什么基础,神经网络从入门到精通
    傅里叶级数@正弦级数和余弦级数@奇偶延拓和周期延拓
    【码银送书第八期】《Python数据挖掘:入门进阶与实用案例分析》
  • 原文地址:https://blog.csdn.net/zm_miner/article/details/125872464
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号