1.0.0
This commit is contained in:
commit
d3d1f3fd30
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
node_modules
|
||||
*.js
|
||||
|
||||
.idea
|
||||
.vscode
|
||||
.atom
|
||||
|
||||
.DS_Store
|
||||
*.ini
|
||||
*.log
|
127
bin/index.ts
Normal file
127
bin/index.ts
Normal file
@ -0,0 +1,127 @@
|
||||
#! node
|
||||
import program from "inquirer";
|
||||
import { file as fs } from "../extend/file";
|
||||
import * as os from "os";
|
||||
import ejs from "ejs";
|
||||
import chalk from "chalk";
|
||||
import { exec } from "child_process";
|
||||
|
||||
// ------------------------------------------------
|
||||
// cli结果:
|
||||
let answers: { appName: string; pkgManager: number; author: string };
|
||||
// 脚本运行目录
|
||||
const path: string = process.cwd() + "/";
|
||||
// 模版所在目录
|
||||
const tpl: string = `${path}/template/`;
|
||||
|
||||
// ========================================================
|
||||
// 1、CLI 交互
|
||||
program
|
||||
.prompt([
|
||||
{
|
||||
name: "appName",
|
||||
message: chalk.cyan("🌈 App Name:"),
|
||||
type: "input",
|
||||
validate(input) {
|
||||
if (input.trim().length <= 0 || !input) return chalk.red("‼️ 必填项");
|
||||
else return true;
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "pkgManager",
|
||||
message: chalk.yellow("🥓 Package Manager:"),
|
||||
type: "list",
|
||||
choices: [
|
||||
{ name: "Yarn", value: 0, checked: true },
|
||||
{ name: "Npm", value: 1 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "author",
|
||||
message: chalk.green("🥤 Your Name:"),
|
||||
type: "input",
|
||||
default: os.userInfo().username,
|
||||
},
|
||||
])
|
||||
.then(async answer => {
|
||||
answers = answer;
|
||||
|
||||
// --------------------------------
|
||||
// 调用2
|
||||
await writing();
|
||||
});
|
||||
|
||||
// ========================================================
|
||||
// 2、读写操作
|
||||
async function writing() {
|
||||
console.log(chalk.blue("\r\n ---------------- WRITING... ----------------"));
|
||||
|
||||
// Static 文件
|
||||
copyStatic([
|
||||
[`controller/index.ts`, `controller/index.ts`],
|
||||
[`extend/logger.ts`, `extend/logger.ts`],
|
||||
[`extend/lucky.ts`, `extend/lucky.ts`],
|
||||
[`route/route.ts`, `route/route.ts`],
|
||||
[`view/index.njk`, `view/index.njk`],
|
||||
[`tsconfig.json`, `tsconfig.json`],
|
||||
[`Dockerfile`, `Dockerfile`],
|
||||
[`yarn.lock`, `yarn.lock`],
|
||||
[`app.ts`, `app.ts`],
|
||||
]);
|
||||
// template that uses the EJS engine
|
||||
await copyTemplate([
|
||||
[`docker-compose.yml`, `docker-compose.yml`],
|
||||
[`package.json`, `package.json`],
|
||||
[`LICENSE`, `LICENSE`],
|
||||
]);
|
||||
|
||||
// --------------------------------
|
||||
// 调用3
|
||||
installed();
|
||||
}
|
||||
|
||||
// ------------------------------------------------
|
||||
// Copy Static 文件
|
||||
function copyStatic(files: string[][]) {
|
||||
files.forEach(file => {
|
||||
fs.copy(`${tpl}${file[0]}`, `${path}${answers.appName}/${file[1]}`);
|
||||
console.log(
|
||||
chalk.green("+") +
|
||||
` ${chalk.grey(answers.appName + "/" + file[1])} ${chalk.green(
|
||||
"SUCCESS.👌"
|
||||
)}`
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// Copy template that uses the EJS engine
|
||||
// 使用EJS,解析模版,并将解析后的内容存入新文件中
|
||||
function copyTemplate(files: string[][]) {
|
||||
files.forEach(async file => {
|
||||
let compileContent = await ejs.renderFile(`${tpl}${file[0]}`, answers);
|
||||
fs.write(`${path}${answers.appName}/${file[1]}`, compileContent);
|
||||
console.log(
|
||||
chalk.green("+") +
|
||||
` ${chalk.grey(answers.appName + "/" + file[1])} ${chalk.green(
|
||||
"SUCCESS.👌"
|
||||
)}`
|
||||
);
|
||||
});
|
||||
}
|
||||
// ========================================================
|
||||
// 3、依赖安装
|
||||
function installed() {
|
||||
console.log(
|
||||
chalk.blue("\r\n ---------------- Installing... ----------------")
|
||||
);
|
||||
|
||||
if (answers.pkgManager == 0) {
|
||||
exec(`cd ${answers.appName} && yarn install`, err => {
|
||||
console.log(chalk.green("SUCCESS.👌"));
|
||||
});
|
||||
} else {
|
||||
exec(`cd ${answers.appName} && npm install`, err => {
|
||||
console.log(chalk.green("SUCCESS.👌"));
|
||||
});
|
||||
}
|
||||
}
|
23
extend/file.d.ts
vendored
Normal file
23
extend/file.d.ts
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 文件操作类
|
||||
* @description 更加语义化的简便文件操作。
|
||||
*/
|
||||
declare class file {
|
||||
/**
|
||||
* 创建目录
|
||||
* @description 如果目录不存在,则自动创建目录,并返回结果
|
||||
* 如果目录存在,则返回 true
|
||||
*
|
||||
* @param {string} filePath 要操作(复制,剪切)的目录名(带文件名和后缀的完整目录)
|
||||
* @return {boolean} 操作状态
|
||||
*/
|
||||
protected static createPath(filePath: string): boolean;
|
||||
/**
|
||||
* 复制文件
|
||||
* @param {string} src 源文件地址
|
||||
* @param {string} dest 文件去向地址
|
||||
* @return {boolean} 操作状态
|
||||
*/
|
||||
static copy(src: string, dest: string): boolean;
|
||||
}
|
||||
export { file };
|
60
extend/file.ts
Normal file
60
extend/file.ts
Normal file
@ -0,0 +1,60 @@
|
||||
import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
|
||||
|
||||
/**
|
||||
* 文件操作类
|
||||
* @description 更加语义化的简便文件操作。
|
||||
*/
|
||||
class file {
|
||||
/**
|
||||
* 创建目录
|
||||
* @description 如果目录不存在,则自动创建目录,并返回结果
|
||||
* 如果目录存在,则返回 true
|
||||
*
|
||||
* @param {string} filePath 要操作(复制,剪切)的目录名(带文件名和后缀的完整目录)
|
||||
* @return {boolean} 操作状态
|
||||
*/
|
||||
protected static createPath(filePath: string): boolean {
|
||||
// 获取完整目录(去除最后一位的文件字段)
|
||||
let dir = filePath.substring(0, filePath.lastIndexOf("/"));
|
||||
if (dir == "" || dir == null) dir = "./"; // 不写目录名 => 根目录
|
||||
|
||||
// 文件夹不存在
|
||||
if (!existsSync(dir)) {
|
||||
let actionNotice = mkdirSync(dir, { recursive: true });
|
||||
return !!actionNotice;
|
||||
} else return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制文件
|
||||
* @param {string} src 源文件地址
|
||||
* @param {string} dest 文件去向地址
|
||||
* @return {boolean} 操作状态
|
||||
*/
|
||||
static copy(src: string, dest: string): boolean {
|
||||
if (!existsSync(src)) {
|
||||
console.log("源文件不存在");
|
||||
return false;
|
||||
}
|
||||
// 复制操作
|
||||
if (file.createPath(dest)) {
|
||||
copyFileSync(src, dest);
|
||||
return existsSync(dest);
|
||||
} else return false;
|
||||
}
|
||||
|
||||
/***
|
||||
* 文件写入(保存文件)
|
||||
* @param {string} filePath 文件去向地址
|
||||
* @param data 写入数据
|
||||
* @return {boolean} 操作状态
|
||||
*/
|
||||
static write(filePath: string, data: any = "") {
|
||||
if (file.createPath(filePath)) {
|
||||
writeFileSync(filePath, data);
|
||||
return existsSync(filePath);
|
||||
} else return false;
|
||||
}
|
||||
}
|
||||
|
||||
export { file };
|
46
package.json
Normal file
46
package.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "@h2ostudio/koa-program",
|
||||
"version": "1.0.0",
|
||||
"bin": {
|
||||
"koa": "bin/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 15"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.0",
|
||||
"ejs": "^3.1.6",
|
||||
"inquirer": "^7.3.3"
|
||||
},
|
||||
"prettier": {
|
||||
"tabWidth": 2,
|
||||
"printWidth": 80,
|
||||
"semi": true,
|
||||
"singleQuote": false,
|
||||
"arrowParens": "avoid",
|
||||
"bracketSpacing": true,
|
||||
"trailingComma": "es5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/ejs": "^3.0.5",
|
||||
"@types/inquirer": "^7.3.1",
|
||||
"prettier": "^2.2.1"
|
||||
},
|
||||
"description": "koa web 项目脚手架",
|
||||
"keywords": [
|
||||
"koa",
|
||||
"koa2",
|
||||
"koa-web",
|
||||
"koa-app",
|
||||
"cli"
|
||||
],
|
||||
"author": {
|
||||
"name": "titor"
|
||||
},
|
||||
"publishConfig": {
|
||||
"registry": "https://npm.pkg.github.com/h2ostudio"
|
||||
},
|
||||
"repository": {
|
||||
"url": ""
|
||||
}
|
||||
}
|
20
template/Dockerfile
Normal file
20
template/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM foolsecret/alpine
|
||||
|
||||
|
||||
# 安装 NodeJS 和 Yarn
|
||||
RUN apk update upgrade && \
|
||||
apk add --no-cache nodejs-current yarn
|
||||
|
||||
|
||||
# 安装依赖项
|
||||
#WORKDIR /root/
|
||||
#COPY . .
|
||||
#RUN cd /root/ && yarn install && yarn tsc
|
||||
|
||||
|
||||
# 默认目录 Root 用户目录
|
||||
# 默认端口 4321
|
||||
# 启动 开发模式
|
||||
VOLUME /root/
|
||||
EXPOSE 4321
|
||||
ENTRYPOINT ["yarn", "docker"]
|
21
template/LICENSE
Normal file
21
template/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 <%= author %>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
29
template/app.ts
Normal file
29
template/app.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import Application from "koa";
|
||||
import { router } from "./route/route";
|
||||
// @ts-ignore
|
||||
import view from "koa-nunjucks-2";
|
||||
import { logger } from "./extend/logger";
|
||||
|
||||
const app: Application = new Application();
|
||||
const port: Number = 4321;
|
||||
|
||||
// -------------------------------------------------- Use View
|
||||
app.use(
|
||||
view({
|
||||
ext: "njk",
|
||||
path: process.cwd() + "/view/",
|
||||
})
|
||||
);
|
||||
|
||||
// -------------------------------------------------- Use logger
|
||||
app.use((ctx: Application.Context, next) => {
|
||||
logger(ctx, next).then();
|
||||
});
|
||||
|
||||
// -------------------------------------------------- Use Route
|
||||
app.use(router.routes());
|
||||
|
||||
// ========================================================================
|
||||
// START Application
|
||||
// ========================================================================
|
||||
app.listen(port);
|
24
template/controller/index.ts
Normal file
24
template/controller/index.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import { Context, Next } from "koa"
|
||||
|
||||
|
||||
export class Index {
|
||||
static async index(ctx: Context, next: Next): Promise<any> {
|
||||
ctx.body = "This is Home!"
|
||||
await next()
|
||||
}
|
||||
|
||||
static async json(ctx: Context, next: Next): Promise<any> {
|
||||
ctx.type = "json"
|
||||
ctx.body = {
|
||||
code: "200",
|
||||
message: "This is Home!",
|
||||
}
|
||||
await next()
|
||||
}
|
||||
|
||||
static async view(ctx: Context) {
|
||||
await ctx.render("index", {
|
||||
name: "titor",
|
||||
})
|
||||
}
|
||||
}
|
12
template/docker-compose.yml
Normal file
12
template/docker-compose.yml
Normal file
@ -0,0 +1,12 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
koa:
|
||||
build: .
|
||||
container_name: "<%= appName %>"
|
||||
restart: "no"
|
||||
ports:
|
||||
- 4321:4321
|
||||
volumes:
|
||||
- .:/root
|
||||
working_dir: /root/
|
47
template/extend/logger.ts
Normal file
47
template/extend/logger.ts
Normal file
@ -0,0 +1,47 @@
|
||||
import { lucky } from "./lucky";
|
||||
import { Context, Next } from "koa";
|
||||
|
||||
/**
|
||||
* 命令行日志:
|
||||
* 输出应用的当前请求信息
|
||||
* @param app {Context | string}
|
||||
* @param next {Next | function}
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async function logger(app: Context, next: Next): Promise<void> {
|
||||
// @ts-ignore
|
||||
let start: Date = new Date();
|
||||
|
||||
await next();
|
||||
|
||||
// @ts-ignore
|
||||
let ms: Date = new Date() - start;
|
||||
console.log(`${setMethodImage(app)} ${lucky.info(app.method)} ${lucky.second(app.url)} ${lucky.primary('['+ ms + "ms]")}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置请求的 头标图片:
|
||||
* 通过 Application 的请求方式,设置不同的命令行请求头标识。
|
||||
* @param app {Application.Context}
|
||||
* @return methodImage {String}
|
||||
*/
|
||||
function setMethodImage(app: Context) {
|
||||
let method = app.method;
|
||||
let methodImage: string;
|
||||
|
||||
switch (method) {
|
||||
case "GET":
|
||||
methodImage = "=>";
|
||||
break;
|
||||
case "POST":
|
||||
methodImage = "<= ";
|
||||
break;
|
||||
default:
|
||||
methodImage = "<=>";
|
||||
break;
|
||||
}
|
||||
return methodImage;
|
||||
}
|
||||
|
||||
// 导出
|
||||
export { logger };
|
81
template/extend/lucky.ts
Normal file
81
template/extend/lucky.ts
Normal file
@ -0,0 +1,81 @@
|
||||
// colors-console 仅支持 CommonJS 导入
|
||||
const cmd = require("colors-console");
|
||||
|
||||
/**
|
||||
* 命令行彩色输出;
|
||||
* 通过语义化方法,给命令行内容增加颜色。
|
||||
* @class lucky
|
||||
*/
|
||||
export class lucky {
|
||||
/**
|
||||
* 字体黄色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static warning(content: any) {
|
||||
return cmd("yellow", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体红色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static danger(content: any) {
|
||||
return cmd("magenta", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体青色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static info(content: any) {
|
||||
return cmd("cyan", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体灰色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static second(content: any) {
|
||||
return cmd("grey", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体白色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static light(content: any) {
|
||||
return cmd("white", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体蓝色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static primary(content: any) {
|
||||
return cmd("blue", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体绿色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static success(content: any) {
|
||||
return cmd("green", content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字体黑色
|
||||
* @param content {String} 要渲染的内容
|
||||
* @return {void}
|
||||
*/
|
||||
static dark(content: any) {
|
||||
return cmd("black", content);
|
||||
}
|
||||
}
|
45
template/package.json
Normal file
45
template/package.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "<%= appName %>",
|
||||
"version": "1.0.0",
|
||||
"main": "app.js",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"dev": "yarn tsc && yarn nodemon app.js",
|
||||
"build": "yarn tsc",
|
||||
"clean": "rm -rf ./**/*.js ./*.js",
|
||||
"clear": "rm -rf node_modules ./**/*.js ./*.js",
|
||||
"docker": "yarn && yarn build && yarn start",
|
||||
"docker:dev": "yarn && yarn dev"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/koa": "^2.11.6",
|
||||
"@types/koa-router": "^7.4.1",
|
||||
"@types/node": "^14.14.22",
|
||||
"nodemon": "^2.0.7",
|
||||
"prettier": "^2.2.1",
|
||||
"rollup-plugin-typescript2": "^0.29.0",
|
||||
"typescript": "^4.1.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"koa": "^2.13.1",
|
||||
"koa-nunjucks-2": "^3.0.2",
|
||||
"koa-router": "^10.0.0",
|
||||
"colors-console": "^1.0.3"
|
||||
},
|
||||
"prettier": {
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"singleQuote": false,
|
||||
"semi": false,
|
||||
"trailingComma": "es5"
|
||||
},
|
||||
"nodemonConfig": {
|
||||
"watch": [
|
||||
"*.js",
|
||||
"*.ts",
|
||||
"*.njk"
|
||||
]
|
||||
}
|
||||
}
|
15
template/route/route.ts
Normal file
15
template/route/route.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import Router from "koa-router"
|
||||
import { Index as IndexRoute } from "./../controller/index"
|
||||
|
||||
const router: Router = new Router()
|
||||
|
||||
|
||||
router.get("/", IndexRoute.index)
|
||||
router.get("/json", IndexRoute.json)
|
||||
router.get("/view", IndexRoute.view)
|
||||
|
||||
|
||||
// --------------------------------------------------
|
||||
// 导出 router 规则
|
||||
// --------------------------------------------------
|
||||
export { router }
|
71
template/tsconfig.json
Normal file
71
template/tsconfig.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"compileOnSave": true,
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Basic Options */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
"target": "ES6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
|
||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
|
||||
// "lib": [], /* Specify library files to be included in the compilation. */
|
||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||
// "checkJs": true, /* Report errors in .js files. */
|
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||
// "outDir": "./", /* Redirect output structure to the directory. */
|
||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
// "composite": true, /* Enable project compilation */
|
||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
||||
// "removeComments": true, /* Do not emit comments to output. */
|
||||
// "noEmit": true, /* Do not emit outputs. */
|
||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||
|
||||
/* Strict Type-Checking Options */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
// "strictNullChecks": true, /* Enable strict null checks. */
|
||||
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
|
||||
/* Additional Checks */
|
||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
|
||||
|
||||
/* Module Resolution Options */
|
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
||||
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
|
||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||
"types": ["koa","koa-compose"], /* Type declaration files to be included in compilation. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
|
||||
/* Source Map Options */
|
||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||
|
||||
/* Advanced Options */
|
||||
"skipLibCheck": true, /* Skip type checking of declaration files. */
|
||||
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
|
||||
}
|
||||
}
|
1
template/view/index.njk
Normal file
1
template/view/index.njk
Normal file
@ -0,0 +1 @@
|
||||
<h3>hello, {{name}}</h3>
|
1451
template/yarn.lock
Normal file
1451
template/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
80
tsconfig.json
Normal file
80
tsconfig.json
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
"compileOnSave": true,
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Basic Options */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
"target": "ES6",
|
||||
/* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
|
||||
"module": "CommonJS",
|
||||
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
|
||||
// "lib": [], /* Specify library files to be included in the compilation. */
|
||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||
// "checkJs": true, /* Report errors in .js files. */
|
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||
// "outDir": "./", /* Redirect output structure to the directory. */
|
||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
// "composite": true, /* Enable project compilation */
|
||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
||||
// "removeComments": true, /* Do not emit comments to output. */
|
||||
// "noEmit": true, /* Do not emit outputs. */
|
||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||
|
||||
/* Strict Type-Checking Options */
|
||||
"strict": true,
|
||||
/* Enable all strict type-checking options. */
|
||||
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
// "strictNullChecks": true, /* Enable strict null checks. */
|
||||
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
|
||||
/* Additional Checks */
|
||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
|
||||
|
||||
/* Module Resolution Options */
|
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
||||
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
|
||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||
// "types": [], /* Type declaration files to be included in compilation. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||
"esModuleInterop": true,
|
||||
/* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
|
||||
/* Source Map Options */
|
||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||
|
||||
/* Advanced Options */
|
||||
"skipLibCheck": true,
|
||||
/* Skip type checking of declaration files. */
|
||||
"forceConsistentCasingInFileNames": true
|
||||
/* Disallow inconsistently-cased references to the same file. */
|
||||
},
|
||||
"files": [
|
||||
"bin/index.ts"
|
||||
]
|
||||
}
|
347
yarn.lock
Normal file
347
yarn.lock
Normal file
@ -0,0 +1,347 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/ejs@^3.0.5":
|
||||
version "3.0.5"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/@types%2fejs/-/ejs-3.0.5.tgz#95a3a1c3d9603eba80fe67ff56da1ba275ef2eda"
|
||||
integrity sha512-k4ef69sS4sIqAPW9GoBnN+URAON2LeL1H0duQvL4RgdEBna19/WattYSA1qYqvbVEDRTSWzOw56tCLhC/m/IOw==
|
||||
|
||||
"@types/inquirer@^7.3.1":
|
||||
version "7.3.1"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/@types%2finquirer/-/inquirer-7.3.1.tgz#1f231224e7df11ccfaf4cf9acbcc3b935fea292d"
|
||||
integrity sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==
|
||||
dependencies:
|
||||
"@types/through" "*"
|
||||
rxjs "^6.4.0"
|
||||
|
||||
"@types/node@*":
|
||||
version "14.14.25"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/@types%2fnode/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93"
|
||||
integrity sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==
|
||||
|
||||
"@types/through@*":
|
||||
version "0.0.30"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/@types%2fthrough/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895"
|
||||
integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
ansi-escapes@^4.2.1:
|
||||
version "4.3.1"
|
||||
resolved "https://mirrors.tencent.com/npm/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
|
||||
integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
|
||||
dependencies:
|
||||
type-fest "^0.11.0"
|
||||
|
||||
ansi-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
|
||||
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
||||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
ansi-styles@^4.1.0:
|
||||
version "4.3.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
async@0.9.x:
|
||||
version "0.9.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
chalk@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.1"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
chalk@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
|
||||
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chardet@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
|
||||
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
|
||||
|
||||
cli-cursor@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
|
||||
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
|
||||
dependencies:
|
||||
restore-cursor "^3.1.0"
|
||||
|
||||
cli-width@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://mirrors.tencent.com/npm/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
|
||||
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.3"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
||||
dependencies:
|
||||
color-name "1.1.3"
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
||||
dependencies:
|
||||
color-name "~1.1.4"
|
||||
|
||||
color-name@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
|
||||
color-name@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
|
||||
ejs@^3.1.6:
|
||||
version "3.1.6"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a"
|
||||
integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==
|
||||
dependencies:
|
||||
jake "^10.6.1"
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
external-editor@^3.0.3:
|
||||
version "3.1.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
|
||||
integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
|
||||
dependencies:
|
||||
chardet "^0.7.0"
|
||||
iconv-lite "^0.4.24"
|
||||
tmp "^0.0.33"
|
||||
|
||||
figures@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
|
||||
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
|
||||
dependencies:
|
||||
escape-string-regexp "^1.0.5"
|
||||
|
||||
filelist@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b"
|
||||
integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==
|
||||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||
|
||||
iconv-lite@^0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
inquirer@^7.3.3:
|
||||
version "7.3.3"
|
||||
resolved "https://mirrors.tencent.com/npm/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
|
||||
integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
|
||||
dependencies:
|
||||
ansi-escapes "^4.2.1"
|
||||
chalk "^4.1.0"
|
||||
cli-cursor "^3.1.0"
|
||||
cli-width "^3.0.0"
|
||||
external-editor "^3.0.3"
|
||||
figures "^3.0.0"
|
||||
lodash "^4.17.19"
|
||||
mute-stream "0.0.8"
|
||||
run-async "^2.4.0"
|
||||
rxjs "^6.6.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
is-fullwidth-code-point@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
||||
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
|
||||
|
||||
jake@^10.6.1:
|
||||
version "10.8.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
|
||||
integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==
|
||||
dependencies:
|
||||
async "0.9.x"
|
||||
chalk "^2.4.2"
|
||||
filelist "^1.0.1"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
lodash@^4.17.19:
|
||||
version "4.17.20"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
|
||||
mimic-fn@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
mute-stream@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
onetime@^5.1.0:
|
||||
version "5.1.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
|
||||
integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
|
||||
dependencies:
|
||||
mimic-fn "^2.1.0"
|
||||
|
||||
os-tmpdir@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://mirrors.tencent.com/npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
||||
|
||||
prettier@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
|
||||
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
|
||||
|
||||
restore-cursor@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
|
||||
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
|
||||
dependencies:
|
||||
onetime "^5.1.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://mirrors.tencent.com/npm/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
|
||||
|
||||
rxjs@^6.4.0, rxjs@^6.6.0:
|
||||
version "6.6.3"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
|
||||
integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
|
||||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
version "2.1.2"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
signal-exit@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||
|
||||
string-width@^4.1.0:
|
||||
version "4.2.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
|
||||
integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
strip-ansi@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
|
||||
integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.0"
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
through@^2.3.6:
|
||||
version "2.3.8"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||
|
||||
tmp@^0.0.33:
|
||||
version "0.0.33"
|
||||
resolved "https://mirrors.tencent.com/npm/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
|
||||
dependencies:
|
||||
os-tmpdir "~1.0.2"
|
||||
|
||||
tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
type-fest@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "http://mirrors.cloud.tencent.com/npm/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
|
||||
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
|
Loading…
Reference in New Issue
Block a user