react-ts模板/脚手架
react-ts-template 脚手架
使用
npm i -g maple-react-cli
maple-react-cli init
- 选择模板 'react-ts-template'
- 输入自定义的项目名
- 创建模板成功
实现
自己整理了一套日常用的模板,但每次初始化都比较麻烦,所以创建了一个工具并传到npm库,下面介绍实现过程
一、准备模板
一般放到github repos即可
二、cli实现
前提准备
yarn add commander inquirer ora axios
- 创建基本文件和目录结构
mkdir maple-react-cli && cd maple-react-cli && npm init // 创建目录
mkdir bin && cd bin // 创建bin文件夹
touch maple.js // 创建指令文件
- 修改package.json, 添加入口
"bin": {
"maple-react-cli": "./bin/maple.js" // 关键命令行
},
- maple.js
#!/usr/bin/env node // shell要以node方式来解析文件
require('../src');
- 准备如下的目录结构,进行命令行解析和构建,下载等
|————bin --------------------- 命令行入口
| |————maple.js -------------
|————config ------------------ 配置
| |————index.js ------------- github api
|————src ---------------------
| |————command --------------
| | |————init.js ------------ 命令行解析
| |————tools ---------------- 工具
| | |————git.js ------------- 获取模板信息
| | |————request.js --------- 请求封装
| |————index.js ------------- 解析入口
|————README.md --------------- 项目描述文件
- src/index.js
// 接收命令行参数, 提供基础信息提示功能
const commander = require('commander');
// 内部模块
const { existsSync } = require('fs');
const { resolve } = require('path');
const { version } = require('../package.json');
// 命令行颜色
require('colors');
commander.version(version)
.parse(process.argv);
const [todo = ''] = commander.args;
if (existsSync(resolve(__dirname, `command/${todo}.js`))) {
require(`./command/${todo}.js`);
} else {
console.log(`未知指令/Valid - 加上init来初始化项目吧/Please add 'init' after the command`.red,
);
process.exit(-1);
}
- 配置 config/index.js
// github api 基础地址
exports.baseURL = 'https://api.github.com';
// github 组织名称
exports.orgName = 'qld-cf'; // 可改为你的仓库
exports.token = ''; // 避免请求限流
- 获取github api token
github -> settings -> developer settings -> personal access tokens -> generage new token
拷贝后到配置文件,token最好设置只读
- command/init.js
命令和文件名一致,便于拓展其他命令和解耦
...
// 获取所在项目组的所有可开发项目列表
try {
getProListLoad = this.getProList.start();
repos = await this.git.getProjectList();
getProListLoad.succeed('获取项目列表成功/Get repos successfully...');
} catch (error) {
console.log(error);
getProListLoad.fail('获取项目列表失败/Get repos failed...');
process.exit(-1);
}
// 向用户咨询他想要开发的项目
if (repos.length === 0) {
console.log('\n可以开发的项目数为 0, 肯定是配置错啦~~\n'.red);
process.exit(-1);
}
const choices = repos.map(({ name }) => name);
const questions = [
{
type: 'list',
name: 'repo',
message: '请选择你想要的模板/Choose template',
choices,
},
];
const { repo } = await this.inquirer.prompt(questions);
...
工具类可执行查看功能,主要封装接口;
至此,工具初始化流程结束
三、 cli运行
- 本地测试
npm i
npm link // 软链到全局npm,就可以使用maple-react-cli
maple-react-cli init
获取项目列表成功/Get repos successfully...
? 请选择你想要的模板/Choose template
react-ts-template
获取项目版本成功/Get repos version successfully...
? 请输入项目名称~/Please enter your project name l
react脚手架初始化成功/React template init successfully
now, please cd l && npm i && npm start by yourself
推送到npmjs
- 登录npmjs
- 还原镜像,避免推送错误
npm config set registry http://registry.npmjs.org
- 按照提示添加npmjs用户信息:
npm adduser npm publish- 去npmjs搜索maple-react-cli
使用
npm i -g maple-react-cli
maple-react-cli init
- 选择模板 'react-ts-template'
- 输入自定义的项目名
- 创建模板成功
githubApi请求错误
- 403: 添加token
- 401: 不要将token push到仓库,本地测试用;但是推送到npm需要token
react-ts模板/脚手架的更多相关文章
- 官方 React 快速上手脚手架 create-react-app
此文简单讲解了官方 React 快速上手脚手架的安装与介绍. 1. React 快速上手脚手架 create-react-app 为了快速地进行构建使用 React 的项目,FaceBook 官方发布 ...
- React 如何搭建脚手架
React 如何搭建脚手架 npm install -g create-react-app //安装 create-react-app react-demo // react-demo ...
- react+ts封装AntdUI的日期选择框之月份选择器DatePicker.month
需求:由于在项目开发中,当需要使用该组件时都需要对该组件进行大量的代码输出,为了方便代码统一管理,减少冗余代码,所以将此组件进行二次封装. 其他成员在使用中只需将自己的设置通过对应的参数传递到该组件, ...
- typescript使用入门及react+ts实战
ts介绍 TypeScript是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程. 与js关系 ts与js区 ...
- 利用yeoman快速搭建React+webpack+es6脚手架
自从前后端开始分离之后,前端项目工程化也显得越来越重要了,之前写过一篇搭建基于Angular+Requirejs+Grunt的前端项目教程,有兴趣的可以点这里去看 但是有些项目可以使用这种方式,但有些 ...
- 使用Vite快速构建Vue3+ts+pinia脚手架
一.前言 vue3的快速更新,很多IT发展快的地区在22开始都已经提上日程,小编所在的青岛好像最近才有点风波.vue3的人才在青岛还是比较稀缺的哈,纯属小编自己的看法,可能小编是个井底之蛙!! vue ...
- react+redux+generation-modation脚手架添加一个todolist
当我遇到问题: 要沉着冷静. 要管理好时间. 别被bug或error搞的不高兴,要高兴,又有煅炼思维的机会了. 要思考这是为什么? 要搞清楚问题的本质. 要探究问题,探究数据的流动. TodoList ...
- react+redux+generation-modation脚手架搭建一个todolist
TodoList 1. 编写actions.js 2. 分析state 试着拆分成多个reducer 3. 了解store 4. 了解redux数据流生命周期 5. 分析容器组件和展示组件 搞清楚,数 ...
- React项目搭建(脚手架)
首先我们需要安装node环境:download nodejs:https://i.cnblogs.com/EditPosts.aspx?opt=1 找到你需要的版本和系统安装包下载并安装. 这时候你可 ...
随机推荐
- cf1216E2 Numerical Sequence (hard version) 二分查找、思维题
题目描述 The only difference between the easy and the hard versions is the maximum value of k. You are g ...
- drf路由与认证
目录 一.路由 1 没有继承视图集的视图类 2 继承了视图集的视图类 3 继承自ModelViewSet的路由写法(自动生成) 二.认证 1 drf认证的源码分析 2 自定义认证类的使用 一.路由 三 ...
- JVM 专题十九:垃圾回收(三)垃圾回收相关概念
1. System.gc()的理解 在默认情況下,通过System.gc()或者Runtime. getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试 ...
- Python之迭代器、装饰器、软件开发规范
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Python: 如何判断远程服务器上Excel文件是否被人打开
最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件. 开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明 ...
- drf频率源码、自动生成接口文档、JWT
目录 一.drf频率源码分析 二.自动生成接口文档 1 安装依赖 2 设置接口文档访问路径 3 文档描述说明的定义位置 4 访问接口文档网页 三.JWT 1 JWT基本原理 1.1 header 1. ...
- nginx一个端口配置多个不同服务映射
upstream tomcat_server{ server 127.0.0.1:8087; server 192.168.149.117:8088; } server { listen 8088; ...
- 紧急处理RAC环境有一个监听down 的情况
初步处理 1. grid 登录查看是监听是否down掉 srvctl status listener -n node1 或者oracle登录 lsnrctl status 查看 如果掉了 grid 用 ...
- 云原生时代高性能Java框架—Quarkus(一)
--- Quarkus&GraalVM介绍.创建并启动第一个项目 Quarkus系列博文 Quarkus&GraalVM介绍.创建并启动第一个项目 构建Quarkus本地镜像.容器化部 ...
- PowerJob 技术综述,能领悟多少就看你下多少功夫了~
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列.从本章开始,就正式进入 PowerJob 框架的技术 ...