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 找到你需要的版本和系统安装包下载并安装. 这时候你可 ...
随机推荐
- (三)ansible playbook
一,YAML语法 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml ...
- (一)ansible 安装配置
CentOS 7.5 一,安装 yum -y install ansible 二,配置hosts文件 /etc/ansible/hosts s1 ansible_ssh_port= ansible_s ...
- Dubbo 高危漏洞!原来都是反序列化惹得祸
前言 这周收到外部合作同事推送的一篇文章,[漏洞通告]Apache Dubbo Provider默认反序列化远程代码执行漏洞(CVE-2020-1948)通告. 按照文章披露的漏洞影响范围,可以说是当 ...
- 本地缓存解决方案-Caffeine Cache
1.1 关于Caffeine Cache Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式.基于容量的方式内部实现采用LRU算法,基于引 ...
- DRS是啥你都不知道?不是吧,不是吧
前言 最近写了很多数据库相关的文章,大家基本上对数据库也有了很多的了解,数据库本身有所了解了,我们是不是应该回归业务本身呢? 大家去了解过自己企业数据库的部署方式么?是怎么部署的,又是部署在哪里的?部 ...
- 痞子衡嵌入式:其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1050/1020/1015系列ROM中的FlexSPI驱动API使用. 今天痞子衡去4S店给爱车做保养了,保养一次要等两小 ...
- shell专题(三):Shell脚本入门
1.脚本格式 脚本以#!/bin/bash开头(指定解析器) 2.第一个Shell脚本:helloworld (1)需求:创建一个Shell脚本,输出helloworld (2)案例实操: [atgu ...
- scrapy shell 遇到的问题
有时候用scrapy shell来调试很方便,但是有些网站有防爬虫机制,所以使用scrapy shell会返回403,比如下面 有两种解决方法: (1):第一种方法是在命令上加上-s USER_AGE ...
- 微信小程序反编译~2020年
目录 摘要 介绍 安装反编译脚本 使用 获取wxapkg文件 反编译 结论 参考资料 摘要 安装wxappUnpacker小程序反编译工具并使用(2020.03) 关键词: 微信小程序反编译 wxss ...
- 利用宝塔和rainloop搭建咱的邮箱
需要咱准备的东东:一枚域名.服务器需根据情况开放25.110.143.465.993端口.宝塔邮局管理器.rainloop.LNMP或者LAMP. 搭建步骤: 1.安装宝塔邮局管理器: 2.设置宝塔邮 ...