From 95726e5eb416dbad4d06b4353bcf003ebae48090 Mon Sep 17 00:00:00 2001 From: hexqi Date: Mon, 3 Jul 2023 19:57:01 -0700 Subject: [PATCH 1/2] chore: remove useless ignored files --- packages/cli/devkit/lib/argv/index.d.ts | 5 - packages/cli/devkit/lib/argv/index.js | 47 --- packages/cli/devkit/lib/cache/index.d.ts | 37 --- packages/cli/devkit/lib/cache/index.js | 121 -------- packages/cli/devkit/lib/cache/index.test.d.ts | 1 - packages/cli/devkit/lib/cache/index.test.js | 122 -------- packages/cli/devkit/lib/cli-config/index.d.ts | 127 -------- packages/cli/devkit/lib/cli-config/index.js | 142 --------- .../cli/devkit/lib/config/ast-analyze.d.ts | 8 - packages/cli/devkit/lib/config/ast-analyze.js | 113 ------- .../lib/config/fixtures/mock.config.d.ts | 0 .../devkit/lib/config/fixtures/mock.config.js | 16 - packages/cli/devkit/lib/config/index.d.ts | 46 --- packages/cli/devkit/lib/config/index.js | 137 --------- .../cli/devkit/lib/config/index.test.d.ts | 1 - packages/cli/devkit/lib/config/index.test.js | 97 ------ .../cli/devkit/lib/config/locale/index.d.ts | 14 - .../cli/devkit/lib/config/locale/index.js | 15 - packages/cli/devkit/lib/env/index.d.ts | 34 --- packages/cli/devkit/lib/env/index.js | 108 ------- packages/cli/devkit/lib/env/index.test.d.ts | 1 - packages/cli/devkit/lib/env/index.test.js | 85 ------ .../cli/devkit/lib/error/handle-default.d.ts | 4 - .../cli/devkit/lib/error/handle-default.js | 20 -- .../devkit/lib/error/handle-eaddrinuse.d.ts | 1 - .../cli/devkit/lib/error/handle-eaddrinuse.js | 57 ---- .../lib/error/handle-eaddrinuse.test.d.ts | 1 - .../lib/error/handle-eaddrinuse.test.js | 45 --- .../cli/devkit/lib/error/handle-enoent.d.ts | 1 - .../cli/devkit/lib/error/handle-enoent.js | 50 ---- .../lib/error/handle-module-not-found.d.ts | 1 - .../lib/error/handle-module-not-found.js | 57 ---- .../lib/error/handle-npm-not-found.d.ts | 4 - .../devkit/lib/error/handle-npm-not-found.js | 25 -- packages/cli/devkit/lib/error/index.d.ts | 8 - packages/cli/devkit/lib/error/index.js | 55 ---- packages/cli/devkit/lib/error/interfaces.d.ts | 0 packages/cli/devkit/lib/error/interfaces.js | 0 .../cli/devkit/lib/error/locale/index.d.ts | 40 --- packages/cli/devkit/lib/error/locale/index.js | 67 ----- packages/cli/devkit/lib/error/register.d.ts | 10 - packages/cli/devkit/lib/error/register.js | 26 -- packages/cli/devkit/lib/error/utils.d.ts | 13 - packages/cli/devkit/lib/error/utils.js | 36 --- packages/cli/devkit/lib/fs/copy-tpl.d.ts | 18 -- packages/cli/devkit/lib/fs/copy-tpl.js | 172 ----------- packages/cli/devkit/lib/fs/copy-tpl.test.d.ts | 1 - packages/cli/devkit/lib/fs/copy-tpl.test.js | 111 ------- packages/cli/devkit/lib/fs/index.d.ts | 3 - packages/cli/devkit/lib/fs/index.js | 13 - packages/cli/devkit/lib/fs/interface.d.ts | 100 ------- packages/cli/devkit/lib/fs/interface.js | 2 - packages/cli/devkit/lib/fs/move.d.ts | 1 - packages/cli/devkit/lib/fs/move.js | 13 - packages/cli/devkit/lib/fs/package.d.ts | 12 - packages/cli/devkit/lib/fs/package.js | 50 ---- packages/cli/devkit/lib/fs/package.test.d.ts | 1 - packages/cli/devkit/lib/fs/package.test.js | 48 --- packages/cli/devkit/lib/fs/remove.d.ts | 1 - packages/cli/devkit/lib/fs/remove.js | 16 - packages/cli/devkit/lib/git/index.d.ts | 5 - packages/cli/devkit/lib/git/index.js | 149 ---------- packages/cli/devkit/lib/home/index.d.ts | 35 --- packages/cli/devkit/lib/home/index.js | 114 ------- packages/cli/devkit/lib/index.d.ts | 17 -- packages/cli/devkit/lib/index.js | 36 --- packages/cli/devkit/lib/intl/index.d.ts | 26 -- packages/cli/devkit/lib/intl/index.js | 117 -------- packages/cli/devkit/lib/intl/interfaces.d.ts | 17 -- packages/cli/devkit/lib/intl/interfaces.js | 11 - .../devkit/lib/log/helpers/logger-test.d.ts | 1 - .../cli/devkit/lib/log/helpers/logger-test.js | 14 - packages/cli/devkit/lib/log/index.d.ts | 13 - packages/cli/devkit/lib/log/index.js | 130 -------- packages/cli/devkit/lib/log/index.test.d.ts | 1 - packages/cli/devkit/lib/log/index.test.js | 74 ----- packages/cli/devkit/lib/module/get.d.ts | 7 - packages/cli/devkit/lib/module/get.js | 162 ---------- .../cli/devkit/lib/module/getEsModule.d.ts | 2 - packages/cli/devkit/lib/module/getEsModule.js | 8 - .../cli/devkit/lib/module/getReallyName.d.ts | 14 - .../cli/devkit/lib/module/getReallyName.js | 70 ----- packages/cli/devkit/lib/module/index.d.ts | 36 --- packages/cli/devkit/lib/module/index.js | 27 -- .../cli/devkit/lib/module/index.test.d.ts | 1 - packages/cli/devkit/lib/module/index.test.js | 92 ------ .../cli/devkit/lib/module/install-one.d.ts | 7 - packages/cli/devkit/lib/module/install-one.js | 90 ------ .../cli/devkit/lib/module/local-exist.d.ts | 5 - packages/cli/devkit/lib/module/local-exist.js | 36 --- .../cli/devkit/lib/module/local-list.d.ts | 10 - packages/cli/devkit/lib/module/local-list.js | 65 ---- .../cli/devkit/lib/module/locale/index.d.ts | 42 --- .../cli/devkit/lib/module/locale/index.js | 47 --- .../cli/devkit/lib/module/online-exist.d.ts | 5 - .../cli/devkit/lib/module/online-exist.js | 15 - .../cli/devkit/lib/module/online-list.d.ts | 7 - packages/cli/devkit/lib/module/online-list.js | 66 ----- packages/cli/devkit/lib/module/update.d.ts | 6 - packages/cli/devkit/lib/module/update.js | 36 --- packages/cli/devkit/lib/module/utils.d.ts | 65 ---- packages/cli/devkit/lib/module/utils.js | 226 -------------- packages/cli/devkit/lib/npm/index.d.ts | 101 ------- packages/cli/devkit/lib/npm/index.js | 279 ------------------ packages/cli/devkit/lib/npm/index.test.d.ts | 1 - packages/cli/devkit/lib/npm/index.test.js | 39 --- packages/cli/devkit/lib/report/index.d.ts | 56 ---- packages/cli/devkit/lib/report/index.js | 187 ------------ packages/cli/devkit/lib/report/utils.d.ts | 36 --- packages/cli/devkit/lib/report/utils.js | 146 --------- packages/cli/devkit/lib/task/has.d.ts | 8 - packages/cli/devkit/lib/task/has.js | 25 -- packages/cli/devkit/lib/task/has.test.d.ts | 1 - packages/cli/devkit/lib/task/has.test.js | 50 ---- packages/cli/devkit/lib/task/index.d.ts | 12 - packages/cli/devkit/lib/task/index.js | 16 - .../cli/devkit/lib/task/locale/index.d.ts | 20 -- packages/cli/devkit/lib/task/locale/index.js | 21 -- .../cli/devkit/lib/task/run-function.d.ts | 12 - packages/cli/devkit/lib/task/run-function.js | 77 ----- packages/cli/devkit/lib/task/run.d.ts | 6 - packages/cli/devkit/lib/task/run.js | 183 ------------ packages/cli/devkit/lib/task/utils.d.ts | 19 -- packages/cli/devkit/lib/task/utils.js | 56 ---- packages/cli/devkit/lib/upgrade/index.d.ts | 6 - packages/cli/devkit/lib/upgrade/index.js | 84 ------ .../cli/devkit/lib/upgrade/locale/index.d.ts | 19 -- .../cli/devkit/lib/upgrade/locale/index.js | 20 -- packages/cli/devkit/lib/user/index.d.ts | 18 -- packages/cli/devkit/lib/user/index.js | 67 ----- packages/cli/devkit/lib/user/interface.d.ts | 9 - packages/cli/devkit/lib/user/interface.js | 2 - packages/cli/devkit/lib/user/utils.d.ts | 12 - packages/cli/devkit/lib/user/utils.js | 84 ------ 134 files changed, 5939 deletions(-) delete mode 100644 packages/cli/devkit/lib/argv/index.d.ts delete mode 100644 packages/cli/devkit/lib/argv/index.js delete mode 100644 packages/cli/devkit/lib/cache/index.d.ts delete mode 100644 packages/cli/devkit/lib/cache/index.js delete mode 100644 packages/cli/devkit/lib/cache/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/cache/index.test.js delete mode 100644 packages/cli/devkit/lib/cli-config/index.d.ts delete mode 100644 packages/cli/devkit/lib/cli-config/index.js delete mode 100644 packages/cli/devkit/lib/config/ast-analyze.d.ts delete mode 100644 packages/cli/devkit/lib/config/ast-analyze.js delete mode 100644 packages/cli/devkit/lib/config/fixtures/mock.config.d.ts delete mode 100644 packages/cli/devkit/lib/config/fixtures/mock.config.js delete mode 100644 packages/cli/devkit/lib/config/index.d.ts delete mode 100644 packages/cli/devkit/lib/config/index.js delete mode 100644 packages/cli/devkit/lib/config/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/config/index.test.js delete mode 100644 packages/cli/devkit/lib/config/locale/index.d.ts delete mode 100644 packages/cli/devkit/lib/config/locale/index.js delete mode 100644 packages/cli/devkit/lib/env/index.d.ts delete mode 100644 packages/cli/devkit/lib/env/index.js delete mode 100644 packages/cli/devkit/lib/env/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/env/index.test.js delete mode 100644 packages/cli/devkit/lib/error/handle-default.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-default.js delete mode 100644 packages/cli/devkit/lib/error/handle-eaddrinuse.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-eaddrinuse.js delete mode 100644 packages/cli/devkit/lib/error/handle-eaddrinuse.test.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-eaddrinuse.test.js delete mode 100644 packages/cli/devkit/lib/error/handle-enoent.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-enoent.js delete mode 100644 packages/cli/devkit/lib/error/handle-module-not-found.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-module-not-found.js delete mode 100644 packages/cli/devkit/lib/error/handle-npm-not-found.d.ts delete mode 100644 packages/cli/devkit/lib/error/handle-npm-not-found.js delete mode 100644 packages/cli/devkit/lib/error/index.d.ts delete mode 100644 packages/cli/devkit/lib/error/index.js delete mode 100644 packages/cli/devkit/lib/error/interfaces.d.ts delete mode 100644 packages/cli/devkit/lib/error/interfaces.js delete mode 100644 packages/cli/devkit/lib/error/locale/index.d.ts delete mode 100644 packages/cli/devkit/lib/error/locale/index.js delete mode 100644 packages/cli/devkit/lib/error/register.d.ts delete mode 100644 packages/cli/devkit/lib/error/register.js delete mode 100644 packages/cli/devkit/lib/error/utils.d.ts delete mode 100644 packages/cli/devkit/lib/error/utils.js delete mode 100644 packages/cli/devkit/lib/fs/copy-tpl.d.ts delete mode 100644 packages/cli/devkit/lib/fs/copy-tpl.js delete mode 100644 packages/cli/devkit/lib/fs/copy-tpl.test.d.ts delete mode 100644 packages/cli/devkit/lib/fs/copy-tpl.test.js delete mode 100644 packages/cli/devkit/lib/fs/index.d.ts delete mode 100644 packages/cli/devkit/lib/fs/index.js delete mode 100644 packages/cli/devkit/lib/fs/interface.d.ts delete mode 100644 packages/cli/devkit/lib/fs/interface.js delete mode 100644 packages/cli/devkit/lib/fs/move.d.ts delete mode 100644 packages/cli/devkit/lib/fs/move.js delete mode 100644 packages/cli/devkit/lib/fs/package.d.ts delete mode 100644 packages/cli/devkit/lib/fs/package.js delete mode 100644 packages/cli/devkit/lib/fs/package.test.d.ts delete mode 100644 packages/cli/devkit/lib/fs/package.test.js delete mode 100644 packages/cli/devkit/lib/fs/remove.d.ts delete mode 100644 packages/cli/devkit/lib/fs/remove.js delete mode 100644 packages/cli/devkit/lib/git/index.d.ts delete mode 100644 packages/cli/devkit/lib/git/index.js delete mode 100644 packages/cli/devkit/lib/home/index.d.ts delete mode 100644 packages/cli/devkit/lib/home/index.js delete mode 100644 packages/cli/devkit/lib/index.d.ts delete mode 100644 packages/cli/devkit/lib/index.js delete mode 100644 packages/cli/devkit/lib/intl/index.d.ts delete mode 100644 packages/cli/devkit/lib/intl/index.js delete mode 100644 packages/cli/devkit/lib/intl/interfaces.d.ts delete mode 100644 packages/cli/devkit/lib/intl/interfaces.js delete mode 100644 packages/cli/devkit/lib/log/helpers/logger-test.d.ts delete mode 100644 packages/cli/devkit/lib/log/helpers/logger-test.js delete mode 100644 packages/cli/devkit/lib/log/index.d.ts delete mode 100644 packages/cli/devkit/lib/log/index.js delete mode 100644 packages/cli/devkit/lib/log/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/log/index.test.js delete mode 100644 packages/cli/devkit/lib/module/get.d.ts delete mode 100644 packages/cli/devkit/lib/module/get.js delete mode 100644 packages/cli/devkit/lib/module/getEsModule.d.ts delete mode 100644 packages/cli/devkit/lib/module/getEsModule.js delete mode 100644 packages/cli/devkit/lib/module/getReallyName.d.ts delete mode 100644 packages/cli/devkit/lib/module/getReallyName.js delete mode 100644 packages/cli/devkit/lib/module/index.d.ts delete mode 100644 packages/cli/devkit/lib/module/index.js delete mode 100644 packages/cli/devkit/lib/module/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/module/index.test.js delete mode 100644 packages/cli/devkit/lib/module/install-one.d.ts delete mode 100644 packages/cli/devkit/lib/module/install-one.js delete mode 100644 packages/cli/devkit/lib/module/local-exist.d.ts delete mode 100644 packages/cli/devkit/lib/module/local-exist.js delete mode 100644 packages/cli/devkit/lib/module/local-list.d.ts delete mode 100644 packages/cli/devkit/lib/module/local-list.js delete mode 100644 packages/cli/devkit/lib/module/locale/index.d.ts delete mode 100644 packages/cli/devkit/lib/module/locale/index.js delete mode 100644 packages/cli/devkit/lib/module/online-exist.d.ts delete mode 100644 packages/cli/devkit/lib/module/online-exist.js delete mode 100644 packages/cli/devkit/lib/module/online-list.d.ts delete mode 100644 packages/cli/devkit/lib/module/online-list.js delete mode 100644 packages/cli/devkit/lib/module/update.d.ts delete mode 100644 packages/cli/devkit/lib/module/update.js delete mode 100644 packages/cli/devkit/lib/module/utils.d.ts delete mode 100644 packages/cli/devkit/lib/module/utils.js delete mode 100644 packages/cli/devkit/lib/npm/index.d.ts delete mode 100644 packages/cli/devkit/lib/npm/index.js delete mode 100644 packages/cli/devkit/lib/npm/index.test.d.ts delete mode 100644 packages/cli/devkit/lib/npm/index.test.js delete mode 100644 packages/cli/devkit/lib/report/index.d.ts delete mode 100644 packages/cli/devkit/lib/report/index.js delete mode 100644 packages/cli/devkit/lib/report/utils.d.ts delete mode 100644 packages/cli/devkit/lib/report/utils.js delete mode 100644 packages/cli/devkit/lib/task/has.d.ts delete mode 100644 packages/cli/devkit/lib/task/has.js delete mode 100644 packages/cli/devkit/lib/task/has.test.d.ts delete mode 100644 packages/cli/devkit/lib/task/has.test.js delete mode 100644 packages/cli/devkit/lib/task/index.d.ts delete mode 100644 packages/cli/devkit/lib/task/index.js delete mode 100644 packages/cli/devkit/lib/task/locale/index.d.ts delete mode 100644 packages/cli/devkit/lib/task/locale/index.js delete mode 100644 packages/cli/devkit/lib/task/run-function.d.ts delete mode 100644 packages/cli/devkit/lib/task/run-function.js delete mode 100644 packages/cli/devkit/lib/task/run.d.ts delete mode 100644 packages/cli/devkit/lib/task/run.js delete mode 100644 packages/cli/devkit/lib/task/utils.d.ts delete mode 100644 packages/cli/devkit/lib/task/utils.js delete mode 100644 packages/cli/devkit/lib/upgrade/index.d.ts delete mode 100644 packages/cli/devkit/lib/upgrade/index.js delete mode 100644 packages/cli/devkit/lib/upgrade/locale/index.d.ts delete mode 100644 packages/cli/devkit/lib/upgrade/locale/index.js delete mode 100644 packages/cli/devkit/lib/user/index.d.ts delete mode 100644 packages/cli/devkit/lib/user/index.js delete mode 100644 packages/cli/devkit/lib/user/interface.d.ts delete mode 100644 packages/cli/devkit/lib/user/interface.js delete mode 100644 packages/cli/devkit/lib/user/utils.d.ts delete mode 100644 packages/cli/devkit/lib/user/utils.js diff --git a/packages/cli/devkit/lib/argv/index.d.ts b/packages/cli/devkit/lib/argv/index.d.ts deleted file mode 100644 index aeebb502..00000000 --- a/packages/cli/devkit/lib/argv/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare const _default: () => { - command: string; - argv: string[]; -}; -export default _default; diff --git a/packages/cli/devkit/lib/argv/index.js b/packages/cli/devkit/lib/argv/index.js deleted file mode 100644 index 45efdb22..00000000 --- a/packages/cli/devkit/lib/argv/index.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const yargs_1 = __importDefault(require("yargs")); -const index_1 = __importDefault(require("../log/index")); -const argv = yargs_1.default.help(false).argv; -const log = index_1.default('core-argv'); -exports.default = () => { - // cli所需的命令 - let command; - // cli命令所需的参数 - let newArgv = []; - // 特殊处理一下传入的参数 - // aio -v 时候的处理 - if (!argv._.concat().pop() && (argv.v || argv.version)) { - // 没有传入任何参数, 且有 -v 或 --version - // 如果有传了参数,说明希望看到套件插件的版本,套件插件版本在 all.js 里面进行处理 - command = 'version'; - } - else if (argv.help || argv.h) { - // 执行 aio -h 或 aio -help 的时候 - if (argv._.length === 1) { - // 显示插件帮助信息 - command = argv._[0]; - newArgv = ['help']; - } - else { - command = 'help'; - } - } - else if (argv._.length === 0) { - command = 'help'; - } - else { - newArgv = argv._.concat(); - command = newArgv.splice(0, 1).pop() || ''; - } - log.debug('控制台传入的原始参数:', argv); - log.debug('即将执行的aio命令:', command); - log.debug('aio命令的参数:', newArgv); - return { - command, - argv: newArgv, - }; -}; diff --git a/packages/cli/devkit/lib/cache/index.d.ts b/packages/cli/devkit/lib/cache/index.d.ts deleted file mode 100644 index 51b63c09..00000000 --- a/packages/cli/devkit/lib/cache/index.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @desc: 缓存模块 - * @author: 华宇果 - */ -/** - * 获取缓存内容,如果不存在或已过期则返回 null - * @param {string} key 缓存的键 - * @returns {mix} - */ -export declare function get(key: string): any; -export interface CacheOption { - expires?: number | null; -} -/** - * 设置缓存内容 - * @param key {string} 缓存的键 - * @param value {mix} 缓存的值 - * @param options {object} - * @param options.expires {number} 有效时长,毫秒为单位, 如 1分钟为 360000 - * @returns {boolean} - */ -export declare function set(key: string, value: any, options?: CacheOption): void; -/** - * 获取缓存文件 - */ -export declare function getCacheFile(): string; -/** - * 清除所有的缓存 - */ -export declare function clear(): void; -declare const _default: { - get: typeof get; - set: typeof set; - getCacheFile: typeof getCacheFile; - clear: typeof clear; -}; -export default _default; diff --git a/packages/cli/devkit/lib/cache/index.js b/packages/cli/devkit/lib/cache/index.js deleted file mode 100644 index f440c9a5..00000000 --- a/packages/cli/devkit/lib/cache/index.js +++ /dev/null @@ -1,121 +0,0 @@ -"use strict"; -/** - * @desc: 缓存模块 - * @author: 华宇果 - */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.clear = exports.getCacheFile = exports.set = exports.get = void 0; -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = require("../cli-config/index"); -const log = index_2.default('core-cache'); -/** - * 获取缓存内容,如果不存在或已过期则返回 null - * @param {string} key 缓存的键 - * @returns {mix} - */ -function get(key) { - // 缓存中存在,则直接返回 - // 因为这个函数调用频率很高,缓存起来比较方便 - if (process.env[key]) { - const cacheStr = decodeURIComponent(process.env[key] || ''); - // 判断是否是字符串对象或数组 - if (cacheStr[0] === '{' || cacheStr[0] === '[') { - return JSON.parse(decodeURIComponent(process.env[key] || '')); - } - return cacheStr; - } - const cacheFile = getCacheFile(); - log.debug('aio缓存文件的路径:', cacheFile); - if (!key || !fs_extra_1.default.existsSync(cacheFile)) { - return null; - } - // 如果不是json文件,也不抛出异常 - let data = fs_extra_1.default.readJsonSync(cacheFile, { throws: false }) || {}; - if (typeof data !== 'object') { - data = {}; - } - // 有效期判断 - if (data.__expires && data.__expires[key]) { - if (data.__expires[key] < Date.now()) { - return null; - } - } - if (data[key]) { - // 缓存经常获取,先存起来 - process.env[key] = encodeURIComponent(JSON.stringify(data[key])); - return data[key]; - } - return null; -} -exports.get = get; -/** - * 设置缓存内容 - * @param key {string} 缓存的键 - * @param value {mix} 缓存的值 - * @param options {object} - * @param options.expires {number} 有效时长,毫秒为单位, 如 1分钟为 360000 - * @returns {boolean} - */ -function set(key, value, options) { - const cacheFile = getCacheFile(); - options = Object.assign({ expires: null }, options); - let data = { __expires: {} }; - if (fs_extra_1.default.existsSync(cacheFile)) { - data = fs_extra_1.default.readJsonSync(cacheFile, { throws: false }) || {}; - if (typeof data !== 'object') { - data = { __expires: {} }; - } - } - // 有效期处理 - data.__expires = data.__expires || {}; - data.__expires[key] = options.expires ? Date.now() + options.expires : null; - data[key] = value; - fs_extra_1.default.outputJsonSync(cacheFile, data, { spaces: 2 }); -} -exports.set = set; -/** - * 获取缓存文件 - */ -function getCacheFile() { - return path.resolve(index_1.default.getHomePath(), index_3.FILE_CACHE); -} -exports.getCacheFile = getCacheFile; -/** - * 清除所有的缓存 - */ -function clear() { - const cacheFile = getCacheFile(); - fs_extra_1.default.removeSync(cacheFile); -} -exports.clear = clear; -exports.default = { - get, - set, - getCacheFile, - clear, -}; diff --git a/packages/cli/devkit/lib/cache/index.test.d.ts b/packages/cli/devkit/lib/cache/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/cache/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/cache/index.test.js b/packages/cli/devkit/lib/cache/index.test.js deleted file mode 100644 index b59ee0db..00000000 --- a/packages/cli/devkit/lib/cache/index.test.js +++ /dev/null @@ -1,122 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __importStar(require("path")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const ava_1 = __importDefault(require("ava")); -const chai_1 = require("chai"); -const index_1 = require("../cli-config/index"); -const cache = __importStar(require("./index")); -/** - * 创建一个mock cache文件 - * @param cacheFile - */ -function createMockFile(cacheFile) { - const testObj = {}; - const testKey = 'test'; - const testValue = 123; - testObj[testKey] = testValue; - fs_extra_1.default.outputJsonSync(cacheFile, testObj); -} -ava_1.default.before((t) => { - const homePath = (process.env[index_1.PROCESS_ENV_HOME_PATH] = path.resolve(__dirname)); - const homeFolder = (process.env[index_1.PROCESS_ENV_HOME_FOLDE] = 'fixtures'); - t.context.home = path.join(homePath, homeFolder); - t.context.cacheFile = path.join(homePath, homeFolder, index_1.FILE_CACHE); - // 不存在则创建 - if (!fs_extra_1.default.existsSync(t.context.home)) { - fs_extra_1.default.mkdirSync(path.join(t.context.home)); - } -}); -ava_1.default.after((t) => { - if (fs_extra_1.default.existsSync(t.context.cacheFile)) { - fs_extra_1.default.removeSync(t.context.cacheFile); - fs_extra_1.default.removeSync(t.context.home); - } -}); -ava_1.default('#cache.json 不存在的情况下 get 获取缓存', (t) => { - if (fs_extra_1.default.existsSync(t.context.cacheFile)) { - fs_extra_1.default.unlinkSync(t.context.cacheFile); - } - chai_1.expect(cache.get('testKey1')).to.be.equal(null); - t.pass(); -}); -ava_1.default('#cache.json 不存在的情况下 set 设置缓存', (t) => { - const key = 'testKey2'; - const value = Math.random(); - cache.set(key, value); - const data = fs_extra_1.default.readJsonSync(t.context.cacheFile); - chai_1.expect(data[key]).to.be.equals(value); - t.pass(); -}); -ava_1.default('# cache.json 存在的情况下 get 获取缓存', (t) => { - createMockFile(t.context.cacheFile); - chai_1.expect(cache.get('test')).to.be.equal(123); - chai_1.expect(cache.get('notExistKey')).to.be.equals(null); - t.pass(); -}); -ava_1.default('# cache.json 存在的情况下 set 设置缓存', (t) => { - const key = 'testKey2'; - const value = Math.random(); - cache.set(key, value); - const data = fs_extra_1.default.readJsonSync(t.context.cacheFile); - chai_1.expect(data[key]).to.be.equals(value); - t.pass(); -}); -ava_1.default('# cache.json 文件异常的情况 get 获取缓存', (t) => { - fs_extra_1.default.outputFileSync(t.context.cacheFile, '123'); - chai_1.expect(cache.get('testKey')).to.be.equal(null); - t.pass(); -}); -ava_1.default('# cache.json 文件异常的情况 set 设置缓存', (t) => { - const key = 'testKey2'; - const value = Math.random(); - cache.set(key, value); - const data = fs_extra_1.default.readJsonSync(t.context.cacheFile); - chai_1.expect(data[key]).to.be.equals(value); - t.pass(); -}); -ava_1.default('# 缓存有效期检测 有效期内正常获取', (t) => { - const key = 'testKey2'; - const value = Math.random(); - cache.set(key, value, { - expires: 100, - }); - chai_1.expect(cache.get('testKey2')).to.be.equal(value); - t.pass(); -}); -ava_1.default('# 缓存有效期检测 过了有效期后获取到的值为null', (t) => { - const key = 'testKey3'; - const value = Math.random(); - cache.set(key, value, { - expires: 20, - }); - return new Promise((resolve) => { - setTimeout(() => { - chai_1.expect(cache.get('testKey3')).to.be.equal(null); - resolve(); - t.pass(); - }, 21); - }); -}); diff --git a/packages/cli/devkit/lib/cli-config/index.d.ts b/packages/cli/devkit/lib/cli-config/index.d.ts deleted file mode 100644 index 13c2ad0d..00000000 --- a/packages/cli/devkit/lib/cli-config/index.d.ts +++ /dev/null @@ -1,127 +0,0 @@ -/** - * cli 多语言文案文件 - */ -export declare const FILE_LOCALE = "aio.locale.json"; -/** - * cli 多语言文案文件 - */ -export declare const FILE_CACHE = "aio.cache.json"; -/** - * cli 环境设置 - */ -export declare const FILE_ENV = "aio.env.json"; -/** - * cli所需的项目配置文件 - */ -export declare const DEFAULT_CONFIG_FILE = "aio.config.js"; -/** - * cli所需的项目配置文件 - */ -export declare const FILE_USER = "aio.user.json"; -/** - * cli默认的根目录文件夹 - */ -export declare const DEFAULT_HOME_FOLDER = ".aio"; -/** - * cli运行命令名称 - */ -export declare const DEFAULT_BIN = "aio"; -/** - * 项目scope - */ -export declare const DEFAULT_SCOPE = "cloud"; -/** - * process.env 中的locale设置 - */ -export declare const PROCESS_ENV_LOCALE = "AIO_LOCALE"; -/** - * process.env 中 cli的根目录所在的路径 - */ -export declare const PROCESS_ENV_HOME_PATH = "AIO_HOME_PATH"; -/** - * process.env 中 cli的根目录文件夹名称 - */ -export declare const PROCESS_ENV_HOME_FOLDE = "AIO_HOME_FOLDER"; -/** - * process.env 中 记录的cli配置文件名称key - */ -export declare const PROCESS_ENV_CONFIG_FILE = "AIO_CONFIG_FILE"; -/** - * process.env 中 记录的cli配置文件路径key - */ -export declare const PROCESS_ENV_CONFIG_PATH = "AIO_CONFIG_PATH"; -/** - * process.env 中记录cli当前环境的key - */ -export declare const PROCESS_ENV_CLI_ENV = "AIO_ENV"; -/** - * process.env 中 记录的cli命令名称key - */ -export declare const PROCESS_ENV_BIN = "AIO_BIN"; -/** - * process.env 中 记录项目scope的key - */ -export declare const PROCESS_ENV_SCOPE = "AIO_SCOPE"; -/** - * process.env 中 记录的cli version key - */ -export declare const PROCESS_ENV_CLI_VERSION = "AIO_VERSION"; -/** - * process.env 中 记录的cli name key - */ -export declare const PROCESS_ENV_CLI_PACKAGE = "AIO_PACKAGE"; -/** - * process.env 中 记录用户在控制台输入的真实命令 - */ -export declare const PROCESS_ENV_MODULE_ENTRY = "AIO_MODULE_ENTRY"; -/** - * process.env 中记录当前cli的运行环境,可选的值有Node/FUXI - */ -export declare const PROCESS_ENV_RUN = "AIO_RUN_ENV"; -/** - * CLI当前的运行环境 - */ -export declare enum ENV_RUN { - NONE = "none", - FUXI = "fuxi" -} -/** - * 获取运行时的aio命令 - */ -export declare function getBinName(): string; -/** - * 获取项目scope - */ -export declare function getScope(): string; -/** - * - * @param name - */ -export declare function setModuleEntry(name: string): void; -export declare function getModuleEntry(): string; -declare const _default: { - FILE_CACHE: string; - FILE_ENV: string; - FILE_LOCALE: string; - FILE_USER: string; - PROCESS_ENV_BIN: string; - PROCESS_ENV_SCOPE: string; - PROCESS_ENV_CLI_ENV: string; - PROCESS_ENV_CONFIG_FILE: string; - PROCESS_ENV_CONFIG_PATH: string; - PROCESS_ENV_HOME_FOLDE: string; - PROCESS_ENV_HOME_PATH: string; - PROCESS_ENV_LOCALE: string; - PROCESS_ENV_CLI_VERSION: string; - PROCESS_ENV_CLI_PACKAGE: string; - PROCESS_ENV_RUN: string; - ENV_RUN: typeof ENV_RUN; - getBinName: typeof getBinName; - getModuleEntry: typeof getModuleEntry; - setModuleEntry: typeof setModuleEntry; - DEFAULT_BIN: string; - DEFAULT_SCOPE: string; - DEFAULT_CONFIG_FILE: string; - DEFAULT_HOME_FOLDER: string; -}; -export default _default; diff --git a/packages/cli/devkit/lib/cli-config/index.js b/packages/cli/devkit/lib/cli-config/index.js deleted file mode 100644 index 5940c09a..00000000 --- a/packages/cli/devkit/lib/cli-config/index.js +++ /dev/null @@ -1,142 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getModuleEntry = exports.setModuleEntry = exports.getScope = exports.getBinName = exports.ENV_RUN = exports.PROCESS_ENV_RUN = exports.PROCESS_ENV_MODULE_ENTRY = exports.PROCESS_ENV_CLI_PACKAGE = exports.PROCESS_ENV_CLI_VERSION = exports.PROCESS_ENV_SCOPE = exports.PROCESS_ENV_BIN = exports.PROCESS_ENV_CLI_ENV = exports.PROCESS_ENV_CONFIG_PATH = exports.PROCESS_ENV_CONFIG_FILE = exports.PROCESS_ENV_HOME_FOLDE = exports.PROCESS_ENV_HOME_PATH = exports.PROCESS_ENV_LOCALE = exports.DEFAULT_SCOPE = exports.DEFAULT_BIN = exports.DEFAULT_HOME_FOLDER = exports.FILE_USER = exports.DEFAULT_CONFIG_FILE = exports.FILE_ENV = exports.FILE_CACHE = exports.FILE_LOCALE = void 0; -/** - * cli 多语言文案文件 - */ -exports.FILE_LOCALE = 'aio.locale.json'; -/** - * cli 多语言文案文件 - */ -exports.FILE_CACHE = 'aio.cache.json'; -/** - * cli 环境设置 - */ -exports.FILE_ENV = 'aio.env.json'; -/** - * cli所需的项目配置文件 - */ -exports.DEFAULT_CONFIG_FILE = 'aio.config.js'; -/** - * cli所需的项目配置文件 - */ -exports.FILE_USER = 'aio.user.json'; -/** - * cli默认的根目录文件夹 - */ -exports.DEFAULT_HOME_FOLDER = '.aio'; -/** - * cli运行命令名称 - */ -exports.DEFAULT_BIN = 'aio'; -/** - * 项目scope - */ -exports.DEFAULT_SCOPE = 'cloud'; -/** - * process.env 中的locale设置 - */ -exports.PROCESS_ENV_LOCALE = 'AIO_LOCALE'; -/** - * process.env 中 cli的根目录所在的路径 - */ -exports.PROCESS_ENV_HOME_PATH = 'AIO_HOME_PATH'; -/** - * process.env 中 cli的根目录文件夹名称 - */ -exports.PROCESS_ENV_HOME_FOLDE = 'AIO_HOME_FOLDER'; -/** - * process.env 中 记录的cli配置文件名称key - */ -exports.PROCESS_ENV_CONFIG_FILE = 'AIO_CONFIG_FILE'; -/** - * process.env 中 记录的cli配置文件路径key - */ -exports.PROCESS_ENV_CONFIG_PATH = 'AIO_CONFIG_PATH'; -/** - * process.env 中记录cli当前环境的key - */ -exports.PROCESS_ENV_CLI_ENV = 'AIO_ENV'; -/** - * process.env 中 记录的cli命令名称key - */ -exports.PROCESS_ENV_BIN = 'AIO_BIN'; -/** - * process.env 中 记录项目scope的key - */ -exports.PROCESS_ENV_SCOPE = 'AIO_SCOPE'; -/** - * process.env 中 记录的cli version key - */ -exports.PROCESS_ENV_CLI_VERSION = 'AIO_VERSION'; -/** - * process.env 中 记录的cli name key - */ -exports.PROCESS_ENV_CLI_PACKAGE = 'AIO_PACKAGE'; -/** - * process.env 中 记录用户在控制台输入的真实命令 - */ -exports.PROCESS_ENV_MODULE_ENTRY = 'AIO_MODULE_ENTRY'; -/** - * process.env 中记录当前cli的运行环境,可选的值有Node/FUXI - */ -exports.PROCESS_ENV_RUN = 'AIO_RUN_ENV'; -/** - * CLI当前的运行环境 - */ -var ENV_RUN; -(function (ENV_RUN) { - ENV_RUN["NONE"] = "none"; - ENV_RUN["FUXI"] = "fuxi"; -})(ENV_RUN = exports.ENV_RUN || (exports.ENV_RUN = {})); -/** - * 获取运行时的aio命令 - */ -function getBinName() { - return process.env[exports.PROCESS_ENV_BIN] || exports.DEFAULT_BIN; -} -exports.getBinName = getBinName; -/** - * 获取项目scope - */ -function getScope() { - return process.env[exports.PROCESS_ENV_SCOPE] || exports.DEFAULT_SCOPE; -} -exports.getScope = getScope; -/** - * - * @param name - */ -function setModuleEntry(name) { - process.env[exports.PROCESS_ENV_MODULE_ENTRY] = name; -} -exports.setModuleEntry = setModuleEntry; -function getModuleEntry() { - return process.env[exports.PROCESS_ENV_MODULE_ENTRY] || ''; -} -exports.getModuleEntry = getModuleEntry; -exports.default = { - FILE_CACHE: exports.FILE_CACHE, - FILE_ENV: exports.FILE_ENV, - FILE_LOCALE: exports.FILE_LOCALE, - FILE_USER: exports.FILE_USER, - PROCESS_ENV_BIN: exports.PROCESS_ENV_BIN, - PROCESS_ENV_SCOPE: exports.PROCESS_ENV_SCOPE, - PROCESS_ENV_CLI_ENV: exports.PROCESS_ENV_CLI_ENV, - PROCESS_ENV_CONFIG_FILE: exports.PROCESS_ENV_CONFIG_FILE, - PROCESS_ENV_CONFIG_PATH: exports.PROCESS_ENV_CONFIG_PATH, - PROCESS_ENV_HOME_FOLDE: exports.PROCESS_ENV_HOME_FOLDE, - PROCESS_ENV_HOME_PATH: exports.PROCESS_ENV_HOME_PATH, - PROCESS_ENV_LOCALE: exports.PROCESS_ENV_LOCALE, - PROCESS_ENV_CLI_VERSION: exports.PROCESS_ENV_CLI_VERSION, - PROCESS_ENV_CLI_PACKAGE: exports.PROCESS_ENV_CLI_PACKAGE, - PROCESS_ENV_RUN: exports.PROCESS_ENV_RUN, - ENV_RUN, - getBinName, - getModuleEntry, - setModuleEntry, - DEFAULT_BIN: exports.DEFAULT_BIN, - DEFAULT_SCOPE: exports.DEFAULT_SCOPE, - DEFAULT_CONFIG_FILE: exports.DEFAULT_CONFIG_FILE, - DEFAULT_HOME_FOLDER: exports.DEFAULT_HOME_FOLDER, -}; diff --git a/packages/cli/devkit/lib/config/ast-analyze.d.ts b/packages/cli/devkit/lib/config/ast-analyze.d.ts deleted file mode 100644 index a95bdece..00000000 --- a/packages/cli/devkit/lib/config/ast-analyze.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 分析一下aio.config.js,搜索key值,写入value,最终合并后输出源码 - * @param code aio.config.js文件源码 - * @param key 需要插入或者修改的 key - * @param value key对应的值 - * @returns {*} - */ -export default function (code: any, key: any, value: any): any; diff --git a/packages/cli/devkit/lib/config/ast-analyze.js b/packages/cli/devkit/lib/config/ast-analyze.js deleted file mode 100644 index 577453ac..00000000 --- a/packages/cli/devkit/lib/config/ast-analyze.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict'; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const esprima = __importStar(require("esprima")); -const esquery_1 = __importDefault(require("esquery")); -const escodegen = __importStar(require("escodegen")); -const tosource_1 = __importDefault(require("tosource")); -/** - * 分析一下aio.config.js,搜索key值,写入value,最终合并后输出源码 - * @param code aio.config.js文件源码 - * @param key 需要插入或者修改的 key - * @param value key对应的值 - * @returns {*} - */ -function default_1(code, key, value) { - let ast; - // 支持 tasks.start 这种写法 - const keyArr = key.split('.'); - const keySelect = keyArr.map(item => `ObjectExpression > [key.name="${item}"]`); - if (typeof value !== 'string') { - value = tosource_1.default(value); - } - ast = esprima.parse(code, { range: true, tokens: true, comment: true }); - ast = escodegen.attachComments(ast, ast.comments, ast.tokens); - // 将需要插入的value进行ast转换 - const valueAST = esprima.parse(`var temp = ${value}`, { attachComment: true }); - // 提取value的ast对象 - const keyMatches = esquery_1.default(valueAST, 'Program > VariableDeclaration > VariableDeclarator'); - const pushAST = keyMatches[0].init; - // 查找aio.config中是否存在这个key - const matches = esquery_1.default(ast, keySelect.join('>')); - // aio 最外层的对象 - const topMatches = esquery_1.default(ast, 'Program > ExpressionStatement > AssignmentExpression > ObjectExpression'); - // 如果已经存在key的话,则替换值 - if (matches.length && matches[0].value) { - matches[0].value = pushAST; - } - else if (keyArr.length === 1) { - // 不存在key的情况 且是非数组的情况 - topMatches[0].properties.push({ - type: 'Property', - key: { - type: 'Identifier', - name: key, - }, - value: pushAST, - }); - } - else { - // 不存在key的情况 - const objMatches = esquery_1.default(topMatches[0], `ObjectExpression > [key.name="${keyArr[0]}"]`); - // TODO 暂只处理 xxx.yyy 这种情况,若需要多级插入,比较麻烦,等有空了且存在这样的需求再考虑. - // 存在xxx 不存在yyy - if (objMatches.length) { - objMatches[0].value.properties.push({ - type: 'Property', - key: { - type: 'Identifier', - name: keyArr[1], - }, - value: pushAST, - }); - } - else { - // 不存在xxx 且不存在 yyy - topMatches[0].properties.push({ - type: 'Property', - key: { - type: 'Identifier', - name: keyArr[0], - }, - value: { - type: 'ObjectExpression', - properties: [ - { - type: 'Property', - key: { - type: 'Identifier', - name: keyArr[1], - }, - value: pushAST, - }, - ], - }, - }); - } - } - // 最后返回源码 - return escodegen.generate(ast, { comment: true }); -} -exports.default = default_1; -; diff --git a/packages/cli/devkit/lib/config/fixtures/mock.config.d.ts b/packages/cli/devkit/lib/config/fixtures/mock.config.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/cli/devkit/lib/config/fixtures/mock.config.js b/packages/cli/devkit/lib/config/fixtures/mock.config.js deleted file mode 100644 index 0407a126..00000000 --- a/packages/cli/devkit/lib/config/fixtures/mock.config.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; -module.exports = { - toolkit: '@opentiny/cli-toolkit-dev', - // abc 插件 - abc: { - xyz: 22, - }, - // 任务列表 - tasks: { - start: [ - { - command: 'echo 33', - }, - ], - }, -}; diff --git a/packages/cli/devkit/lib/config/index.d.ts b/packages/cli/devkit/lib/config/index.d.ts deleted file mode 100644 index 548898db..00000000 --- a/packages/cli/devkit/lib/config/index.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** -* 获取配置文件的名称 -* @return {string} -*/ -export declare function getConfigName(): string; -/** - * 获取config.js的文件路径 - */ -export declare function getConfigPath(): string; -/** -* 当前目录下是否存在aio.config.js文件 -* @param {string} dir 需要判断文件是否存在的目录,可选,默认取值:当前运行目录 -*/ -export declare function exist(dir?: string): boolean; -/** -* 获取整个pi.config.js文件的内容 -*/ -export declare function getAll(dir: string): any; -/** -* 根据key获取aio.config.js的单个对象 -* @param key 配置的键名 -* @param dir 配置文件的路径 -* @return object -*/ -export declare function get(key: string, dir?: string): any; -/** - * 获取套件的名字 - */ -export declare function getToolkitName(dir?: string): string | null; -/** - * 设置aio.config.js的属性值,写入相关内容 - * @param key aio.config.js中的key - * @param value key对应的value - * @param dir 配置文件路径 - */ -export declare function set(key: string, value: any, dir?: string): void; -declare const _default: { - exist: typeof exist; - set: typeof set; - get: typeof get; - getAll: typeof getAll; - getConfigName: typeof getConfigName; - getConfigPath: typeof getConfigPath; - getToolkitName: typeof getToolkitName; -}; -export default _default; diff --git a/packages/cli/devkit/lib/config/index.js b/packages/cli/devkit/lib/config/index.js deleted file mode 100644 index 57f9b2cd..00000000 --- a/packages/cli/devkit/lib/config/index.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.set = exports.getToolkitName = exports.get = exports.getAll = exports.exist = exports.getConfigPath = exports.getConfigName = void 0; -const fs = __importStar(require("fs")); -const path = __importStar(require("path")); -const index_1 = __importDefault(require("../intl/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = __importStar(require("../report/index")); -const locale_1 = __importDefault(require("./locale")); -const ast_analyze_1 = __importDefault(require("./ast-analyze")); -const index_4 = require("../cli-config/index"); -const log = index_2.default("core-config"); -const CWD = process.cwd(); -/** -* 获取配置文件的名称 -* @return {string} -*/ -function getConfigName() { - return process.env[index_4.PROCESS_ENV_CONFIG_FILE] || index_4.DEFAULT_CONFIG_FILE; -} -exports.getConfigName = getConfigName; -/** - * 获取config.js的文件路径 - */ -function getConfigPath() { - return process.env[index_4.PROCESS_ENV_CONFIG_PATH] || CWD; -} -exports.getConfigPath = getConfigPath; -/** -* 当前目录下是否存在aio.config.js文件 -* @param {string} dir 需要判断文件是否存在的目录,可选,默认取值:当前运行目录 -*/ -function exist(dir) { - const cwd = dir || getConfigPath(); - const configPath = path.join(cwd, getConfigName()); - return fs.existsSync(configPath); -} -exports.exist = exist; -/** -* 获取整个pi.config.js文件的内容 -*/ -function getAll(dir) { - const cwd = dir || getConfigPath(); - const configName = getConfigName(); - // 先判断文件是否存在,存在的话才读取 - if (!exist(cwd)) { - return null; - } - // 直接使用require的话,会有缓存, 需要先删除 require 的缓存 - const configPath = path.join(cwd, configName); - delete require.cache[configPath]; - try { - const file = require(configPath); - log.debug("get %s , file = %o", configName, file); - return file; - } - catch (e) { - const intl = new index_1.default(locale_1.default); - log.error(intl.get("readConfigError", { file: configName })); - log.error(intl.get("moreDetail")); - log.error(e && e.stack); - index_3.default.error(e.code || index_3.ErrorType.MODULE_NOT_FOUND, e.stack || e); - return process.exit(1); - } -} -exports.getAll = getAll; -/** -* 根据key获取aio.config.js的单个对象 -* @param key 配置的键名 -* @param dir 配置文件的路径 -* @return object -*/ -function get(key, dir) { - const file = this.getAll(dir); - log.debug("key = %s ,all config = %o", key, file); - return file ? file[key] : null; -} -exports.get = get; -/** - * 获取套件的名字 - */ -function getToolkitName(dir) { - const config = this.getAll(dir || ""); - if (config && config.toolkit) { - return config.toolkit; - } - return null; -} -exports.getToolkitName = getToolkitName; -/** - * 设置aio.config.js的属性值,写入相关内容 - * @param key aio.config.js中的key - * @param value key对应的value - * @param dir 配置文件路径 - */ -function set(key, value, dir) { - const cwd = dir || getConfigPath(); - const configName = getConfigName(); - const filePath = path.join(cwd, configName); - // 读取文件 - const code = fs.readFileSync(filePath, 'utf8'); - const source = ast_analyze_1.default(code, key, value); - log.debug('set %s file source string = %o', configName, source); - fs.writeFileSync(filePath, source); -} -exports.set = set; -exports.default = { - exist, - set, - get, - getAll, - getConfigName, - getConfigPath, - getToolkitName -}; diff --git a/packages/cli/devkit/lib/config/index.test.d.ts b/packages/cli/devkit/lib/config/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/config/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/config/index.test.js b/packages/cli/devkit/lib/config/index.test.js deleted file mode 100644 index a142b5e5..00000000 --- a/packages/cli/devkit/lib/config/index.test.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __importStar(require("path")); -// import proxyquire from 'proxyquire'; -const fs_extra_1 = __importDefault(require("fs-extra")); -const ava_1 = __importDefault(require("ava")); -const config = __importStar(require("./index")); -const index_1 = require("../cli-config/index"); -const chai_1 = require("chai"); -ava_1.default.before((t) => { - const mockCwd = path.resolve(__dirname, 'fixtures'); - const source = path.resolve(mockCwd, 'mock.config.js'); - const mock = path.resolve(mockCwd, index_1.DEFAULT_CONFIG_FILE); - // const config = proxyquire('../lib/index', {}); - t.context = { - mockCwd, - source, - mock, - }; - fs_extra_1.default.copySync(source, mock); -}); -ava_1.default.after((t) => { - if (fs_extra_1.default.existsSync(t.context.mock)) { - fs_extra_1.default.unlinkSync(t.context.mock); - } -}); -ava_1.default('# get 获取数据', (t) => { - t.deepEqual(config.get('abc', t.context.mockCwd), { - xyz: 22, - }); -}); -ava_1.default('# set 设置数据', (t) => { - const value = { - xyz: 23, - }; - config.set('abc', value, t.context.mockCwd); - t.deepEqual(config.get('abc', t.context.mockCwd), value); -}); -ava_1.default('# set value是一个字符串对象', (t) => { - config.set('gg', ` -//这是一行注释 -{ - "good" : "yes" -} - `, t.context.mockCwd); - t.deepEqual(config.get('gg', t.context.mockCwd), { - good: 'yes', - }); -}); -ava_1.default('# set value是一个带.的字符串', (t) => { - config.set('xx.yy', '123', t.context.mockCwd); - t.deepEqual(config.get('xx', t.context.mockCwd), { - yy: 123, - }); -}); -ava_1.default('# set value是一个带.的字符串,复杂对象', (t) => { - config.set('tasks.build', [ - { - command: 'echo 44', - }, - ], t.context.mockCwd); - chai_1.expect(config.get('tasks', t.context.mockCwd)).to.have.property('build'); - chai_1.expect(config.get('tasks', t.context.mockCwd).build[0]).to.have.property('command'); - t.pass(); -}); -ava_1.default('# getToolkitName 获取套件的名字', (t) => { - const toolkit = config.getToolkitName(t.context.mockCwd); - chai_1.expect(toolkit).to.be.equal('@cloud/aio-toolkit-dev'); - t.pass(); -}); -ava_1.default('# getConfigName 获取配置文件的名称', t => { - const name = config.getConfigName(); - chai_1.expect(name).to.be.equal('aio.config.js'); - t.pass(); -}); diff --git a/packages/cli/devkit/lib/config/locale/index.d.ts b/packages/cli/devkit/lib/config/locale/index.d.ts deleted file mode 100644 index 30cd37d9..00000000 --- a/packages/cli/devkit/lib/config/locale/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 语言文件 - */ -declare const _default: { - zh: { - readConfigError: string; - moreDetail: string; - }; - en: { - readConfigError: string; - moreDetail: string; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/config/locale/index.js b/packages/cli/devkit/lib/config/locale/index.js deleted file mode 100644 index 3af43ae2..00000000 --- a/packages/cli/devkit/lib/config/locale/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -/** - * 语言文件 - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - zh: { - readConfigError: '读取配置文件失败,请确认 {file} 文件是否有错误', - moreDetail: '详细报错信息如下:' - }, - en: { - readConfigError: 'Failed to read config, please double check {file}', - moreDetail: 'details:' - }, -}; diff --git a/packages/cli/devkit/lib/env/index.d.ts b/packages/cli/devkit/lib/env/index.d.ts deleted file mode 100644 index c2e84d3e..00000000 --- a/packages/cli/devkit/lib/env/index.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -export declare enum EnvType { - Green = "Green", - Yellow = "Yellow", - Red = "Red", - None = "None" -} -/** - * 往配置文件(aio.env.json)写入用户自定义的环境配置 - * @param env - */ -export declare function set(env: EnvType): void; -/** - * 获取当前用户的环境变量 - * 优先判断process.env.AIO_ENV变量 - * @returns {EnvType} 返回可枚举的环境类型 - */ -export declare function get(): EnvType; -/** - * 判断cli环境配置文件(aio.env.json)是否存在 - * 可用做cli环境是否已初始化的判断 - * @returns {boolean} - */ -export declare function has(): boolean; -/** - * 删除cli环境配置文件(aio.env.json) - */ -export declare function remove(): void; -declare const _default: { - set: typeof set; - get: typeof get; - has: typeof has; - remove: typeof remove; -}; -export default _default; diff --git a/packages/cli/devkit/lib/env/index.js b/packages/cli/devkit/lib/env/index.js deleted file mode 100644 index 7747beaa..00000000 --- a/packages/cli/devkit/lib/env/index.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.remove = exports.has = exports.get = exports.set = exports.EnvType = void 0; -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const debug_1 = __importDefault(require("debug")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = require("../cli-config/index"); -const debug = debug_1.default('core-env'); -// 定义一个可枚举的环境变量 -var EnvType; -(function (EnvType) { - EnvType["Green"] = "Green"; - EnvType["Yellow"] = "Yellow"; - EnvType["Red"] = "Red"; - EnvType["None"] = "None"; -})(EnvType = exports.EnvType || (exports.EnvType = {})); -// 缓存env对象 -let cacheEnv; -/** - * 往配置文件(aio.env.json)写入用户自定义的环境配置 - * @param env - */ -function set(env) { - index_1.default.initHomeDir(); - const envFile = path.join(index_1.default.getHomePath(), index_2.FILE_ENV); - const envData = { - env, - }; - debug('set aio env data : %o , set aio to : %s', envData, envFile); - cacheEnv = null; - fs_extra_1.default.outputJsonSync(envFile, envData); -} -exports.set = set; -/** - * 获取当前用户的环境变量 - * 优先判断process.env.AIO_ENV变量 - * @returns {EnvType} 返回可枚举的环境类型 - */ -function get() { - // 如果有环境变量,则优先使用环境变量的值 - const envGlobal = process.env[index_2.PROCESS_ENV_CLI_ENV]; - if (envGlobal && EnvType[envGlobal]) - return EnvType[envGlobal]; - // 由于该方法调用频繁,在这里使用一个cacheEnv对象做为缓存,避免频繁的IO操作 - let envData = { env: EnvType.None }; - if (cacheEnv) { - envData = cacheEnv; - } - else { - const envFile = path.join(index_1.default.getHomePath(), index_2.FILE_ENV); - if (fs_extra_1.default.existsSync(envFile)) { - envData = fs_extra_1.default.readJsonSync(envFile); - cacheEnv = envData; - } - } - if (envData && envData.env && EnvType[envData.env]) { - return EnvType[envData.env]; - } - return EnvType.None; -} -exports.get = get; -/** - * 判断cli环境配置文件(aio.env.json)是否存在 - * 可用做cli环境是否已初始化的判断 - * @returns {boolean} - */ -function has() { - const envFile = path.join(index_1.default.getHomePath(), index_2.FILE_ENV); - return fs_extra_1.default.existsSync(envFile); -} -exports.has = has; -/** - * 删除cli环境配置文件(aio.env.json) - */ -function remove() { - fs_extra_1.default.removeSync(path.join(index_1.default.getHomePath(), index_2.FILE_ENV)); - cacheEnv = null; -} -exports.remove = remove; -exports.default = { - set, - get, - has, - remove, -}; diff --git a/packages/cli/devkit/lib/env/index.test.d.ts b/packages/cli/devkit/lib/env/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/env/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/env/index.test.js b/packages/cli/devkit/lib/env/index.test.js deleted file mode 100644 index 562ea084..00000000 --- a/packages/cli/devkit/lib/env/index.test.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ava_1 = __importDefault(require("ava")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const index_1 = require("../cli-config/index"); -const path = __importStar(require("path")); -const Env = __importStar(require("./index")); -const index_2 = require("../cli-config/index"); -let envFile; -let aioHome; -ava_1.default.before(() => { - // 先设置aio的home目录为test/helpers; - aioHome = process.env[index_1.PROCESS_ENV_HOME_PATH] = path.join(__dirname, 'helpers'); - fs_extra_1.default.mkdirsSync(aioHome); - envFile = path.join(aioHome, `${index_2.DEFAULT_HOME_FOLDER}/${index_2.FILE_ENV}`); -}); -ava_1.default.after(() => { - fs_extra_1.default.removeSync(path.join(aioHome)); - delete process.env[index_1.PROCESS_ENV_HOME_PATH]; -}); -ava_1.default('# Env.set 设置网络环境', (t) => { - Env.set(Env.EnvType.Green); - const file = fs_extra_1.default.existsSync(envFile); - const fileData = fs_extra_1.default.readJsonSync(envFile); - // 判断文件是否存在 - t.true(file); - // 判断文件内容 - t.is(typeof fileData, 'object'); - t.deepEqual(fileData, { env: 'Green' }); -}); -ava_1.default('# Env.get 通过env环境变量判断来判断', (t) => { - process.env[index_2.PROCESS_ENV_CLI_ENV] = 'Green'; - const env = Env.get(); - t.is(env, 'Green'); - delete process.env[index_2.PROCESS_ENV_CLI_ENV]; -}); -ava_1.default('# Env.get 多次调用可读取缓存', (t) => { - // 设置为内网 - Env.set(Env.EnvType.Red); - const env = Env.get(); - t.is(env, 'Red'); - // 第二次调用时应该走的是cache - // 先手动改一下文件内容,再判断是否为true - fs_extra_1.default.outputJsonSync(envFile, { env: 'Green' }); - const env2 = Env.get(); - t.is(env2, 'Red'); -}); -ava_1.default('# Env.has 初始化后则存在配置文件', (t) => { - Env.set(Env.EnvType.Yellow); - const result = Env.has(); - t.true(result); -}); -ava_1.default('# Env.has 尚未初始化则不存在配置文件', (t) => { - Env.remove(); - const result = Env.has(); - t.false(result); -}); -ava_1.default('# Env.remove 不存在配置文件', (t) => { - Env.set(Env.EnvType.Green); - Env.remove(); - const result = fs_extra_1.default.existsSync(envFile); - t.false(result); -}); diff --git a/packages/cli/devkit/lib/error/handle-default.d.ts b/packages/cli/devkit/lib/error/handle-default.d.ts deleted file mode 100644 index 880bbbc6..00000000 --- a/packages/cli/devkit/lib/error/handle-default.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Created by hugo on 16/11/16. - */ -export default function (e: any): Promise; diff --git a/packages/cli/devkit/lib/error/handle-default.js b/packages/cli/devkit/lib/error/handle-default.js deleted file mode 100644 index f8c25fed..00000000 --- a/packages/cli/devkit/lib/error/handle-default.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -/** - * Created by hugo on 16/11/16. - */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importDefault(require("./locale/index")); -const index_3 = __importDefault(require("../intl/index")); -const log = index_1.default('core-error'); -async function default_1(e) { - const intl = new index_3.default(index_2.default); - const ERROR_MSG = intl.get('intranetTips'); - log.error(ERROR_MSG); - e.stack && console.log(e.stack); - return true; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/error/handle-eaddrinuse.d.ts b/packages/cli/devkit/lib/error/handle-eaddrinuse.d.ts deleted file mode 100644 index 56c03934..00000000 --- a/packages/cli/devkit/lib/error/handle-eaddrinuse.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function (e: any): Promise; diff --git a/packages/cli/devkit/lib/error/handle-eaddrinuse.js b/packages/cli/devkit/lib/error/handle-eaddrinuse.js deleted file mode 100644 index 4a20536f..00000000 --- a/packages/cli/devkit/lib/error/handle-eaddrinuse.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Created by hugo on 17/4/21. - * 端口被占用时的错误处理 - */ -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importDefault(require("./locale/index")); -const chalk_1 = __importDefault(require("chalk")); -const index_3 = __importDefault(require("../intl/index")); -const os = __importStar(require("os")); -const log = index_1.default('core-error'); -function handleSolution(port) { - const isWin = os.type().match(/^Win/); - const intl = new index_3.default(index_2.default); - if (!isWin) { - return chalk_1.default.yellow(intl.get('winPidTips', { port })); - } - return chalk_1.default.yellow(intl.get('macPidTips', { port })); -} -// 处理 -async function default_1(e) { - if (e.code !== 'EADDRINUSE') { - return false; - } - const match = e.message.match(/listen EADDRINUSE(.*):(\d+)/); - if (match && match[2]) { - const port = match[2]; - const intl = new index_3.default(index_2.default); - log.error(intl.get('helpTips', { port: chalk_1.default.green(port), solution: handleSolution(port) })); - return true; - } - return false; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/error/handle-eaddrinuse.test.d.ts b/packages/cli/devkit/lib/error/handle-eaddrinuse.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/error/handle-eaddrinuse.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/error/handle-eaddrinuse.test.js b/packages/cli/devkit/lib/error/handle-eaddrinuse.test.js deleted file mode 100644 index 9d0642f6..00000000 --- a/packages/cli/devkit/lib/error/handle-eaddrinuse.test.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ava_1 = __importDefault(require("ava")); -const handle_eaddrinuse_1 = __importDefault(require("./handle-eaddrinuse")); -ava_1.default('#处理 EADDRINUSE 的异常 listen EADDRINUSE :::9000', async (t) => { - // const intl = new Intl(message); - // const locale = intl.getLocale(); - const result = await handle_eaddrinuse_1.default({ - code: 'EADDRINUSE', - message: ` -Error: listen EADDRINUSE :::9000 - at Object.exports._errnoException (util.js:1007:11) - at exports._exceptionWithHostPort (util.js:1030:20) - at Server._listen2 (net.js:1253:14) - at listen (net.js:1289:10) - at Server.listen (net.js:1385:5) - at Application.app.listen (/Users/hugo/.aio/node_modules/._koa@1.4.0@koa/lib/application.js:74:24) - at Object.Commands.open (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:43:18) - at Promise (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:140:30) - at module.exports (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:134:10) -`, - }); - t.true(result); -}); -ava_1.default('# 处理 EADDRINUSE 的异常 listen EADDRINUSE 127.0.0.1:3000', async (t) => { - const result = await handle_eaddrinuse_1.default({ - code: 'EADDRINUSE', - message: ` -Error: listen EADDRINUSE 127.0.0.1:3000 - at Object.exports._errnoException (util.js:1007:11) - at exports._exceptionWithHostPort (util.js:1030:20) - at Server._listen2 (net.js:1253:14) - at listen (net.js:1289:10) - at Server.listen (net.js:1385:5) - at Application.app.listen (/Users/hugo/.aio/node_modules/._koa@1.4.0@koa/lib/application.js:74:24) - at Object.Commands.open (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:43:18) - at Promise (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:140:30) - at module.exports (/Users/hugo/.aio/node_modules/._@cloud_aio-plugin-server@1.2.3@@cloud/aio-plugin-server/index.js:134:10) -`, - }); - t.true(result); -}); diff --git a/packages/cli/devkit/lib/error/handle-enoent.d.ts b/packages/cli/devkit/lib/error/handle-enoent.d.ts deleted file mode 100644 index 56c03934..00000000 --- a/packages/cli/devkit/lib/error/handle-enoent.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function (e: any): Promise; diff --git a/packages/cli/devkit/lib/error/handle-enoent.js b/packages/cli/devkit/lib/error/handle-enoent.js deleted file mode 100644 index 4b9cea4b..00000000 --- a/packages/cli/devkit/lib/error/handle-enoent.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Created by hugo on 16/11/16. - */ -const lodash_1 = __importDefault(require("lodash")); -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importDefault(require("../intl/index")); -const index_3 = __importDefault(require("./locale/index")); -const log = index_1.default('core-error'); -async function default_1(e) { - if (e.code !== 'ENOENT') { - return false; - } - // 目前可能的值有spawn xx ENOENT;spawnSync xx ENOENT - const match = e.message.match(/\s(.*)ENOENT/); - const intl = new index_2.default(index_3.default); - if (match && match[0]) { - const module = match[1].trim(); - const installer = 'npm'; - log.error(intl.get('commandNotFound', { module })); - // 本地模块 - if (module.indexOf('node_modules') !== -1) { - const cmdArr = module.split('/'); - const startIdx = lodash_1.default.indexOf(cmdArr, 'node_modules'); - let runModule; - // 直接运行命令 - if (module.indexOf('node_modules/.bin/') !== -1) { - runModule = cmdArr[cmdArr.length - 1]; - } - else if (module.indexOf('node_modules/@ali') !== -1 && cmdArr.length >= 2) { - // 本地文件直接运行 - runModule = `${cmdArr[startIdx + 1]}/${cmdArr[startIdx + 2]}`; - } - else { - runModule = cmdArr[startIdx + 1]; - } - log.error(intl.get('fixLocalTips', { installer, runModule })); - } - else { - log.error(intl.get('fixGlobalTips', { installer, module })); - } - return true; - } - return false; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/error/handle-module-not-found.d.ts b/packages/cli/devkit/lib/error/handle-module-not-found.d.ts deleted file mode 100644 index 56c03934..00000000 --- a/packages/cli/devkit/lib/error/handle-module-not-found.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function (e: any): Promise; diff --git a/packages/cli/devkit/lib/error/handle-module-not-found.js b/packages/cli/devkit/lib/error/handle-module-not-found.js deleted file mode 100644 index d0825afa..00000000 --- a/packages/cli/devkit/lib/error/handle-module-not-found.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importDefault(require("./locale/index")); -const utils_1 = __importDefault(require("./utils")); -const index_3 = __importDefault(require("../npm/index")); -const index_4 = __importDefault(require("../intl/index")); -const home_1 = __importDefault(require("../home")); -const log = index_1.default('core-error'); -// 处理 -async function default_1(e) { - if (e.code !== 'MODULE_NOT_FOUND') { - return false; - } - const match = e.message.match(/'(.*)'/); - const intl = new index_4.default(index_2.default); - const cwd = process.cwd(); - // 排除 相对路径 ../ & ./ 的情况( . 开头) - if (match && match[0] && match[0].indexOf('.') !== 1) { - const module = utils_1.default.pureModuleName(match[1]); - log.error(intl.get('moduleNotFound', { module })); - let moduleCwd = home_1.default.getHomePath(); - // 判断一下如果是项目文件中抛出的报错,则需要安装在项目文件夹中 - if (e.stack && e.stack.toString().indexOf(cwd) !== -1) { - moduleCwd = cwd; - // 这种情况下极有可能是本地的相关依赖没有安装,先全部执行一次安装 - await index_3.default.installDependencies(); - log.success(intl.get('installSuccess')); - } - try { - // 安装所需的依赖 - await index_3.default.install(module, { - cwd: moduleCwd, - }); - log.success(intl.get('installDone', { module, moduleCwd })); - log.success(intl.get('installDoneTips')); - return true; - } - catch (err) { - log.error(intl.get('installError')); - return false; - } - } - else if (match && match.length === 2) { - log.error(intl.get('notFound', { file: match[1] })); - if (e.stack) { - log.error(intl.get('detailError')); - console.log(e.stack); - } - return true; - } - return false; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/error/handle-npm-not-found.d.ts b/packages/cli/devkit/lib/error/handle-npm-not-found.d.ts deleted file mode 100644 index ae7a7965..00000000 --- a/packages/cli/devkit/lib/error/handle-npm-not-found.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 未找到npm包或安装 npm 包时出现其他错误时,进行提示 - */ -export default function (e: any): Promise; diff --git a/packages/cli/devkit/lib/error/handle-npm-not-found.js b/packages/cli/devkit/lib/error/handle-npm-not-found.js deleted file mode 100644 index 80411cb9..00000000 --- a/packages/cli/devkit/lib/error/handle-npm-not-found.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../intl/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = __importDefault(require("./locale/index")); -const log = index_2.default('core-error'); -/** - * 未找到npm包或安装 npm 包时出现其他错误时,进行提示 - */ -async function default_1(e) { - const errMsg = e ? e.toString() : ''; - const intl = new index_1.default(index_3.default); - const regx = /install\s(.+)\serror/; - const match = errMsg.match(regx); - if (match) { - log.debug('npm-not-found 捕获'); - log.error(intl.get('npmNotFound', { module: match[1] })); - return true; - } - return false; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/error/index.d.ts b/packages/cli/devkit/lib/error/index.d.ts deleted file mode 100644 index e11ae1b7..00000000 --- a/packages/cli/devkit/lib/error/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * @desc 错误处理,先会调用之前注册过的错误处理,最后执行默认的处理 - */ -/** - * 错误处理器 - * @param {error} e 错误对象 - */ -export default function handle(e: any): Promise; diff --git a/packages/cli/devkit/lib/error/index.js b/packages/cli/devkit/lib/error/index.js deleted file mode 100644 index 1af25c71..00000000 --- a/packages/cli/devkit/lib/error/index.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -/** - * @desc 错误处理,先会调用之前注册过的错误处理,最后执行默认的处理 - */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = __importDefault(require("./utils")); -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importStar(require("../report/index")); -const handle_npm_not_found_1 = __importDefault(require("./handle-npm-not-found")); -const handle_module_not_found_1 = __importDefault(require("./handle-module-not-found")); -const handle_enoent_1 = __importDefault(require("./handle-enoent")); -const handle_default_1 = __importDefault(require("./handle-default")); -const log = index_1.default('core-logs'); -const innerList = [handle_npm_not_found_1.default, handle_module_not_found_1.default, handle_enoent_1.default, handle_default_1.default]; -/** - * 错误处理器 - * @param {error} e 错误对象 - */ -async function handle(e) { - log.debug('error code = %s', e.code); - log.debug(e.stack || e); - const handList = utils_1.default.getHandleList().concat(innerList); - // 发送错误日志 - index_2.default.error(e.code || index_2.ErrorType.CLI_CORE, e.stack || e); - for (let i = 0; i < handList.length; i += 1) { - const res = await handList[i](e); - if (res === true) { - // 说明错误已被处理, 可以直接返回了 - return; - } - } -} -exports.default = handle; diff --git a/packages/cli/devkit/lib/error/interfaces.d.ts b/packages/cli/devkit/lib/error/interfaces.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/cli/devkit/lib/error/interfaces.js b/packages/cli/devkit/lib/error/interfaces.js deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/cli/devkit/lib/error/locale/index.d.ts b/packages/cli/devkit/lib/error/locale/index.d.ts deleted file mode 100644 index 2cc45d29..00000000 --- a/packages/cli/devkit/lib/error/locale/index.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 语言文件 - */ -declare const _default: { - zh: { - intranetTips: string; - winPidTips: string; - macPidTips: string; - helpTips: string; - commandNotFound: string; - fixLocalTips: string; - fixGlobalTips: string; - moduleNotFound: string; - installSuccess: string; - installDone: string; - installDoneTips: string; - installError: string; - notFound: string; - detailError: string; - npmNotFound: string; - }; - en: { - intranetTips: string; - winPidTips: string; - macPidTips: string; - helpTips: string; - commandNotFound: string; - fixLocalTips: string; - fixGlobalTips: string; - moduleNotFound: string; - installSuccess: string; - installDone: string; - installDoneTips: string; - installError: string; - notFound: string; - detailError: string; - npmNotFound: string; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/error/locale/index.js b/packages/cli/devkit/lib/error/locale/index.js deleted file mode 100644 index c411d9f9..00000000 --- a/packages/cli/devkit/lib/error/locale/index.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -/** - * 语言文件 - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - zh: { - // handle-default.js - intranetTips: '运行报错, 请在issue中反馈问题:https://open.codehub.huawei.com/innersource/TinyStage/aio/issues/new', - winPidTips: ` # 看下是哪个PID占用的端口 - $ lsof -i :{port} - # 杀进程 - $ kill -9 【pid】`, - macPidTips: ` # 看下是哪个PID占用的端口 - $ netstat -anop tcp | find /i ":{port}" | find "LISTENING" - # 杀进程 - $ taskkill /F /pid 【pid】`, - helpTips: `运行失败,检测到当前端口号 {port} 已被其他程序占用 -修复建议: - 1. 切换到其他端口再试试 - 2. 请按下面的方法关闭占用端口的程序 - -{solution} -`, - commandNotFound: '运行插件或套件时出现了错误, 未找到 {module} 命令,请看下是否有安装!', - fixLocalTips: '修复建议: 在控制台执行 {installer} install {runModule} 试试!', - fixGlobalTips: '修复建议: 在控制台执行 {installer} install -g {module} 试试!', - moduleNotFound: '运行插件或套件时出现了错误, 未找到 {module} 模块! 正在尝试自动修复...', - installSuccess: '成功安装当前项目中的依赖,请重新运行命令!', - installDone: '已将 {module} 模块安装至 {moduleCwd} ,自动修复成功,请重新运行命令!', - installDoneTips: '若重新运行仍然出现问题,请在命令前面加上:DEBUG=core-error 来获取详细错误堆栈', - installError: 'sorry 自动修复失败, 请手动修复', - notFound: '运行时出现了错误, 未找到 {file} 文件,请确认 {file} 是否存在!', - detailError: '详细错误堆栈信息如下:', - npmNotFound: '安装 {module} 出错,请确认网络是否正常及包名是否输入正确', - }, - en: { - // handle-default.js - intranetTips: 'Runtime Error, please report the issue: https://open.codehub.huawei.com/innersource/TinyStage/aio/issues/new', - winPidTips: ` # Look up for the PID which occupies the port - $ lsof -i :{port} - # Kill process - $ kill -9 【pid】`, - macPidTips: ` # Look up for the PID which occupies the port - $ netstat -anop tcp | find /i ":{port}" | find "LISTENING" - # Kill process - $ taskkill /F /pid 【pid】`, - helpTips: `The operation failed and the current port number {port} was detected to be occupied by other programs -Fix suggestions: - 1. Try switching to another port - 2. Please follow the procedure below to close the program that occupies the port - -{solution} -`, - commandNotFound: 'The {module} command was not found, there was an error when running the plugin or toolkit. Please see if there is an installation!', - fixLocalTips: 'Fix Suggestions: Try {installer} install {runModule} in terminal!', - fixGlobalTips: 'Fix Suggestions: Try {installer} install -g {module} in terminal!', - moduleNotFound: 'the {module} module was not found, there was an error when running the plugin or toolkit! Trying to fix it automatically ...', - installSuccess: 'Re-run the command to successfully install dependencies in the current project!', - installDone: 'The {module} module has been installed to {moduleCwd} and the automatic repair is successful. Please re-run the command!', - installDoneTips: 'If there is still a problem while re-run, please add: 【 DEBUG=core-error 】 to the beginning of your command to get the detailed error stack', - installError: 'sorry, the automatic repair failed, please repair manually', - notFound: 'The {file} file was not found, there was an error in the run. Please make sure {file} exists!', - detailError: 'Detailed error stack information is as follows:', - npmNotFound: 'Install {module} error, please check whether the network is normal and the package name is correct', - }, -}; diff --git a/packages/cli/devkit/lib/error/register.d.ts b/packages/cli/devkit/lib/error/register.d.ts deleted file mode 100644 index 982e084d..00000000 --- a/packages/cli/devkit/lib/error/register.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @desc 注册错误处理器 - */ -/** - * 注册错误处理器 - * @param {generatorFunction|Array} handle 错误处理器, 必须是 generator函数, 多个时可以传数组, - * 进程报错时传入错误对象并依次调用, - * 如果 catch 到错误并处理完请返回 true, 否则将继续往下执行其他处理器函数 - */ -export default function register(handle: any): void; diff --git a/packages/cli/devkit/lib/error/register.js b/packages/cli/devkit/lib/error/register.js deleted file mode 100644 index 4180422c..00000000 --- a/packages/cli/devkit/lib/error/register.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -/** - * @desc 注册错误处理器 - */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = __importDefault(require("./utils")); -/** - * 注册错误处理器 - * @param {generatorFunction|Array} handle 错误处理器, 必须是 generator函数, 多个时可以传数组, - * 进程报错时传入错误对象并依次调用, - * 如果 catch 到错误并处理完请返回 true, 否则将继续往下执行其他处理器函数 - */ -function register(handle) { - if (Array.isArray(handle)) { - handle.forEach((item) => { - utils_1.default.register(item); - }); - } - else { - utils_1.default.register(handle); - } -} -exports.default = register; diff --git a/packages/cli/devkit/lib/error/utils.d.ts b/packages/cli/devkit/lib/error/utils.d.ts deleted file mode 100644 index 80d45277..00000000 --- a/packages/cli/devkit/lib/error/utils.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare const _default: { - /** - * 处理模块名,返回正确的名称 - * abc/abc.js - * @cloud/abc/a.js - * @cloud/abc - * abc - */ - pureModuleName(moduleName: any): any; - register(handle: any): void; - getHandleList(): any; -}; -export default _default; diff --git a/packages/cli/devkit/lib/error/utils.js b/packages/cli/devkit/lib/error/utils.js deleted file mode 100644 index e630b6cf..00000000 --- a/packages/cli/devkit/lib/error/utils.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = require("../cli-config/index"); -const handleList = []; -exports.default = { - /** - * 处理模块名,返回正确的名称 - * abc/abc.js - * @cloud/abc/a.js - * @cloud/abc - * abc - */ - pureModuleName(moduleName) { - const modules = moduleName.split('/'); - const scope = index_1.getScope(); - let module = moduleName; - // @cloud/xxx,@cloud/xxx的情况 - if (modules.length > 1) { - if (modules[0].indexOf(`@${scope}`) !== -1) { - module = `${modules[0]}/${modules[1]}`; - } - else { - module = modules[0]; - } - } - return module; - }, - register(handle) { - if (typeof handle === 'function') { - handleList.push(handle); - } - }, - getHandleList() { - return handleList; - }, -}; diff --git a/packages/cli/devkit/lib/fs/copy-tpl.d.ts b/packages/cli/devkit/lib/fs/copy-tpl.d.ts deleted file mode 100644 index 23de86a0..00000000 --- a/packages/cli/devkit/lib/fs/copy-tpl.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -interface CopyOption { - ignoreEjs?: string[]; - ignore?: string[]; - notTextFile?: string[] | undefined; - rename?(filename: string): string; -} -/** - * - * @param from 原始文件路径 - * @param to 目标文件路径 - * @param context ejs 模板替换的对象 - * @param options object对象,用于过滤和重命名文件 - * @param options.ignore 数组, 类似 gitignore 的写法,默认值['node_modules', '.DS_Store', '.idea'] - * @param options.rename 重命名文件 - * @param options.notTextFile 非文本类型的文件,默认值[]; - */ -export default function copyDirectory(from: string, to: string, context?: any, options?: CopyOption): void; -export {}; diff --git a/packages/cli/devkit/lib/fs/copy-tpl.js b/packages/cli/devkit/lib/fs/copy-tpl.js deleted file mode 100644 index 31a1bd96..00000000 --- a/packages/cli/devkit/lib/fs/copy-tpl.js +++ /dev/null @@ -1,172 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const index_1 = __importDefault(require("../log/index")); -const ejs_1 = __importDefault(require("ejs")); -const log = index_1.default('core-fs'); -/** - * 判断是否是模板路径 - * @param srcPath 路径 - */ -function isTemplate(srcPath) { - const arr = srcPath.split(path.sep); - let i = 0; - arr.forEach(item => { - if (item === 'template') { - i += 1; - } - }); - return i >= 2; -} -/** - * replace content with template scope, - * - `{{ test }}` will replace - * - `\{{ test }}` will skip - * - * @param {String} content - template content - * @param {Object} scope - variable scope - * @return {String} new content - */ -function replaceTemplate(content, scope) { - const pattern = /{\s*(\w+?)\s*}/g; // {property} - return content.replace(pattern, (_, token) => scope[token] || ''); -} -// 非文本类型的文件直接copy过去 -const notTextFileType = [ - '.gz', - '.tgz', - '.jpg', - '.xls', - '.xlsx', - '.doc', - '.docx', - '.png', - '.apng', - '.gif', - '.webp', - '.psd', - '.zip', - '.tar', - '.rar', - '.7z', - '.bz2', - '.dmg', - '.mp4', - '.jpeg', - '.woff', - '.woff2', - '.eot', - '.ttf', - '.otf', - '.ico', -]; -/** - * - * @param from 原始文件路径 - * @param to 目标文件路径 - * @param context ejs 模板替换的对象 - * @param options object对象,用于过滤和重命名文件 - * @param options.ignore 数组, 类似 gitignore 的写法,默认值['node_modules', '.DS_Store', '.idea'] - * @param options.rename 重命名文件 - * @param options.notTextFile 非文本类型的文件,默认值[]; - */ -function copyDirectory(from, to, context, options) { - options = options || {}; - options.ignore = options.ignore || ['node_modules', '.DS_Store', '.idea']; - const notTextFile = options.notTextFile ? notTextFileType.concat(options.notTextFile) : notTextFileType; - // 递归读取目录 - const recursiveDir = (curSrcPath, curDistPath) => { - curDistPath = replaceTemplate(curDistPath, context); - // curSrcPath = ejs.render(curSrcPath, context, { escape: '{{', rmWhitespace: '}}'}) - // console.log(curSrcPath, '=curSrcPath2',context) - const stats = fs_extra_1.default.statSync(curSrcPath); - // 目录处理 - if (stats.isDirectory()) { - // 若目标目录不存在, 会创建一个 - fs_extra_1.default.mkdirsSync(curDistPath); - const dirFiles = fs_extra_1.default.readdirSync(curSrcPath); - for (let i = 0; i < dirFiles.length; i += 1) { - if (options && options.ignore && options.ignore.indexOf(dirFiles[i]) === -1) { - recursiveDir(path.resolve(curSrcPath, dirFiles[i]), path.resolve(curDistPath, dirFiles[i])); - } - } - } - else { - // 文件处理 - const curDistPathArr = curDistPath.split(path.sep); - const fileName = curDistPathArr.pop() || ''; - let newFilename = fileName; - // 自定义文件名转换 - if (options && options.rename) { - newFilename = options.rename(fileName); - if (!newFilename) { - log.error(`${fileName} = File name conversion failed and returned empty`); - return; - } - } - // 重命名 _ 开头的文件为 . , 过滤掉template目录下的内容 - if (fileName.indexOf('_') === 0) { - newFilename = fileName.replace('_', '.'); - curDistPath = path.resolve(curDistPathArr.join(path.sep), newFilename); - } - curDistPath = path.resolve(curDistPathArr.join(path.sep), newFilename); - // 非文本文件,直接copy - if (notTextFile.indexOf(path.extname(newFilename)) !== -1) { - fs_extra_1.default.copySync(curSrcPath, curDistPath); - log.success(`${curDistPath} copy successfully`); - } - else { - let fileContent = fs_extra_1.default.readFileSync(curSrcPath, { encoding: 'utf8' }).toString(); - // 文件内容变量替换 - // 模板下的模板不做替换,如toolkit-dev 下的toolkit/template - const ignoreTemplate = isTemplate(curSrcPath); - // 单独设置了不需要ejs的文件 - let ignoreFile = false; - if (options && options.ignoreEjs && options.ignoreEjs.length) { - ignoreFile = options.ignoreEjs.indexOf(curSrcPath) !== -1; - } - if (context && !ignoreTemplate && !ignoreFile) { - try { - fileContent = ejs_1.default.render(fileContent, context, options); - } - catch (e) { - log.error(`${curDistPath} file written error !`); - throw e; - } - } - const writeErr = fs_extra_1.default.writeFileSync(curDistPath, fileContent); - if (!writeErr) { - log.success(`${curDistPath} written successfully`); - } - else { - log.error(`${curDistPath} written error`); - } - } - } - }; - recursiveDir(from, to); -} -exports.default = copyDirectory; diff --git a/packages/cli/devkit/lib/fs/copy-tpl.test.d.ts b/packages/cli/devkit/lib/fs/copy-tpl.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/fs/copy-tpl.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/fs/copy-tpl.test.js b/packages/cli/devkit/lib/fs/copy-tpl.test.js deleted file mode 100644 index 7d983532..00000000 --- a/packages/cli/devkit/lib/fs/copy-tpl.test.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; -/* eslint-disable @typescript-eslint/explicit-function-return-type */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __importStar(require("path")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const ava_1 = __importDefault(require("ava")); -const chai_1 = require("chai"); -const copy_tpl_1 = __importDefault(require("./copy-tpl")); -const fixtures = path.resolve(__dirname, 'fixtures'); -const dirSrc = path.resolve(fixtures, 'dir-src'); -const dirDist = path.resolve(fixtures, 'dir-dist'); -ava_1.default.before(() => { - if (!fs_extra_1.default.existsSync(fixtures)) { - fs_extra_1.default.copySync(path.join(__dirname, '../../src/fs/fixtures'), fixtures); - } - if (fs_extra_1.default.existsSync(dirDist)) { - fs_extra_1.default.removeSync(dirDist); - } - // 复制文件 - copy_tpl_1.default(dirSrc, dirDist, { name: 'test', rename: 'newname-dir' }, { - ignore: ['zzz.js'], - ignoreEjs: [path.join(dirSrc, 'bbb.js')], - rename: function (filename) { - if (filename === 'xxx.js') { - return 'yyy.js'; - } - return filename; - }, - notTextFile: ['.dd'], - }); -}); -ava_1.default.after(() => { - if (fs_extra_1.default.existsSync(dirDist)) { - fs_extra_1.default.removeSync(dirDist); - } -}); -ava_1.default('# 创建目标目录', (t) => { - chai_1.expect(fs_extra_1.default.existsSync(dirDist)).to.be.equals(true); - t.pass(); -}); -ava_1.default('# 创建目标目录下需要复制过来的文件', (t) => { - const abc = path.resolve(dirDist, 'abc.js'); - chai_1.expect(fs_extra_1.default.existsSync(abc)).to.be.equals(true); - t.pass(); -}); -ava_1.default('# 正常进行变量替换', (t) => { - const abc = path.resolve(dirDist, 'abc.js'); - const abcDist = path.resolve(dirSrc, '../dir-dist-abc.js'); - chai_1.expect(fs_extra_1.default.existsSync(abc)).to.be.equals(fs_extra_1.default.existsSync(abcDist)); - t.pass(); -}); -ava_1.default('# 不在目标目录下面创建需要忽略的文件', (t) => { - chai_1.expect(fs_extra_1.default.existsSync(path.resolve(dirDist, 'zzz.js'))).to.be.equals(false); - t.pass(); -}); -ava_1.default('# 对文件名进行替换', (t) => { - const yyy = path.resolve(dirDist, 'yyy.js'); - const xxx = path.resolve(dirSrc, 'xxx.js'); - chai_1.expect(fs_extra_1.default.existsSync(yyy)).to.be.equals(true); - chai_1.expect(fs_extra_1.default.readFileSync(yyy)).to.be.deep.equals(fs_extra_1.default.readFileSync(xxx)); - t.pass(); -}); -ava_1.default('# 忽略ejs文件', (t) => { - const bbb = path.resolve(dirDist, 'bbb.js'); - chai_1.expect(fs_extra_1.default.existsSync(bbb)).to.be.equals(true); - const ejsTpl = fs_extra_1.default.readFileSync(bbb).indexOf('<{%=name%}>') !== -1; - chai_1.expect(ejsTpl).to.be.equals(true); - t.pass(); -}); -ava_1.default('# copy非文本文件', (t) => { - const gz = path.resolve(dirDist, 'a.tar.gz'); - chai_1.expect(fs_extra_1.default.existsSync(gz)).to.be.equals(true); - t.pass(); -}); -ava_1.default.only('# copy非文本文件,参数中配置的非文本类型', (t) => { - const gz = path.resolve(dirDist, 'a.dd'); - chai_1.expect(fs_extra_1.default.existsSync(gz)).to.be.equals(true); - t.pass(); -}); -ava_1.default('# copy空目录过去', (t) => { - const emptyDir = path.resolve(dirDist, 'empty-folder'); - chai_1.expect(fs_extra_1.default.lstatSync(emptyDir).isDirectory()).to.be.equals(true); - t.pass(); -}); -ava_1.default('# 重命名文件夹', (t) => { - const emptyDir = path.resolve(dirDist, 'newname-dir'); - chai_1.expect(fs_extra_1.default.lstatSync(emptyDir).isDirectory()).to.be.equals(true); - t.pass(); -}); diff --git a/packages/cli/devkit/lib/fs/index.d.ts b/packages/cli/devkit/lib/fs/index.d.ts deleted file mode 100644 index 9934648c..00000000 --- a/packages/cli/devkit/lib/fs/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as IPackageJSON } from './interface'; -declare const _default: any; -export default _default; diff --git a/packages/cli/devkit/lib/fs/index.js b/packages/cli/devkit/lib/fs/index.js deleted file mode 100644 index a4c24b37..00000000 --- a/packages/cli/devkit/lib/fs/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_extra_1 = __importDefault(require("fs-extra")); -const copy_tpl_1 = __importDefault(require("./copy-tpl")); -const move_1 = __importDefault(require("./move")); -const remove_1 = __importDefault(require("./remove")); -const package_1 = __importDefault(require("./package")); -exports.default = Object.assign(Object.assign(Object.assign({}, fs_extra_1.default), { copyTpl: copy_tpl_1.default, - move: move_1.default, - remove: remove_1.default }), package_1.default); diff --git a/packages/cli/devkit/lib/fs/interface.d.ts b/packages/cli/devkit/lib/fs/interface.d.ts deleted file mode 100644 index ad67097e..00000000 --- a/packages/cli/devkit/lib/fs/interface.d.ts +++ /dev/null @@ -1,100 +0,0 @@ -export default interface IPackageJSON extends Object { - name: string; - version?: string; - description?: string; - keywords?: string[]; - homepage?: string; - bugs?: string | IBugs; - license?: string; - author?: string | IAuthor; - contributors?: string[] | IAuthor[]; - files?: string[]; - main?: string; - bin?: string | IBinMap; - man?: string | string[]; - directories?: IDirectories; - repository?: string | IRepository; - scripts?: IScriptsMap; - config?: IConfig; - dependencies?: IDependencyMap; - devDependencies?: IDependencyMap; - peerDependencies?: IDependencyMap; - optionalDependencies?: IDependencyMap; - bundledDependencies?: string[]; - engines?: IEngines; - os?: string[]; - cpu?: string[]; - preferGlobal?: boolean; - private?: boolean; - publishConfig?: IPublishConfig; - aioOption?: IAioOption; - changeLog?: IChangeLog[]; - [propName: string]: any; -} -export interface IChangeLog { - version: string; - log: string[]; -} -export interface IAioOption { - type: string; - update: boolean; - chName: string; -} -/** - * An author or contributor - */ -export interface IAuthor { - name: string; - email?: string; - homepage?: string; -} -/** - * A map of exposed bin commands - */ -export interface IBinMap { - [commandName: string]: string; -} -/** - * A bugs link - */ -export interface IBugs { - email: string; - url: string; -} -export interface IConfig { - name?: string; - config?: Object; -} -/** - * A map of dependencies - */ -export interface IDependencyMap { - [dependencyName: string]: string; -} -/** - * CommonJS package structure - */ -export interface IDirectories { - lib?: string; - bin?: string; - man?: string; - doc?: string; - example?: string; -} -export interface IEngines { - node?: string; - npm?: string; -} -export interface IPublishConfig { - registry?: string; -} -/** - * A project repository - */ -export interface IRepository { - type: string; - url: string; -} -export interface IScriptsMap { - [scriptName: string]: string; -} diff --git a/packages/cli/devkit/lib/fs/interface.js b/packages/cli/devkit/lib/fs/interface.js deleted file mode 100644 index c8ad2e54..00000000 --- a/packages/cli/devkit/lib/fs/interface.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/cli/devkit/lib/fs/move.d.ts b/packages/cli/devkit/lib/fs/move.d.ts deleted file mode 100644 index 57245e61..00000000 --- a/packages/cli/devkit/lib/fs/move.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function move(oldPath: string, newPath: string): void; diff --git a/packages/cli/devkit/lib/fs/move.js b/packages/cli/devkit/lib/fs/move.js deleted file mode 100644 index 9b35abdc..00000000 --- a/packages/cli/devkit/lib/fs/move.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_extra_1 = __importDefault(require("fs-extra")); -const index_1 = __importDefault(require("../log/index")); -const log = index_1.default('core-fs'); -function move(oldPath, newPath) { - fs_extra_1.default.renameSync(oldPath, newPath); - log.success(`${oldPath} move to ${newPath}`); -} -exports.default = move; diff --git a/packages/cli/devkit/lib/fs/package.d.ts b/packages/cli/devkit/lib/fs/package.d.ts deleted file mode 100644 index c0ce94fd..00000000 --- a/packages/cli/devkit/lib/fs/package.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import IPackageJSON from './interface'; -/** - * 读取package文件 - * @param cwd package.json 所在的目录,默认取值 process.cwd() - */ -export declare function readPackage(cwd?: string): IPackageJSON | null; -export declare function writePackage(pkg: IPackageJSON, cwd: string): void; -declare const _default: { - readPackage: typeof readPackage; - writePackage: typeof writePackage; -}; -export default _default; diff --git a/packages/cli/devkit/lib/fs/package.js b/packages/cli/devkit/lib/fs/package.js deleted file mode 100644 index 4a1a0637..00000000 --- a/packages/cli/devkit/lib/fs/package.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.writePackage = exports.readPackage = void 0; -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -/** - * 读取package文件 - * @param cwd package.json 所在的目录,默认取值 process.cwd() - */ -function readPackage(cwd) { - cwd = cwd || process.cwd(); - const pkgPath = path.resolve(cwd, 'package.json'); - if (fs_extra_1.default.existsSync(pkgPath)) { - return fs_extra_1.default.readJsonSync(pkgPath); - } - return null; -} -exports.readPackage = readPackage; -function writePackage(pkg, cwd) { - cwd = cwd || process.cwd(); - const pkgPath = path.resolve(cwd, 'package.json'); - fs_extra_1.default.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), { encoding: 'utf8' }); -} -exports.writePackage = writePackage; -exports.default = { - readPackage, - writePackage, -}; diff --git a/packages/cli/devkit/lib/fs/package.test.d.ts b/packages/cli/devkit/lib/fs/package.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/fs/package.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/fs/package.test.js b/packages/cli/devkit/lib/fs/package.test.js deleted file mode 100644 index 401d563b..00000000 --- a/packages/cli/devkit/lib/fs/package.test.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __importStar(require("path")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const fsPkg = __importStar(require("./package")); -const ava_1 = __importDefault(require("ava")); -const pkgMock = { - varsion: '1.0.0', - name: 'aio', -}; -const pkgPath = path.join(__dirname, 'package.json'); -ava_1.default.before(() => { - fs_extra_1.default.outputJsonSync(pkgMock, pkgPath); -}); -ava_1.default('# readPackage', t => { - const pkg = fsPkg.readPackage(__dirname); - t.is(pkg.name, 'aio'); -}); -ava_1.default('# writePackage', t => { - fsPkg.writePackage({ - version: '1.0.1', - name: 'aio2', - }, __dirname); - const pkg = require(path.join(__dirname, 'package.json')); - t.is(pkg.name, 'aio2'); -}); diff --git a/packages/cli/devkit/lib/fs/remove.d.ts b/packages/cli/devkit/lib/fs/remove.d.ts deleted file mode 100644 index 78054046..00000000 --- a/packages/cli/devkit/lib/fs/remove.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function remove(file: string): void; diff --git a/packages/cli/devkit/lib/fs/remove.js b/packages/cli/devkit/lib/fs/remove.js deleted file mode 100644 index 9823806e..00000000 --- a/packages/cli/devkit/lib/fs/remove.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_extra_1 = __importDefault(require("fs-extra")); -const index_1 = __importDefault(require("../log/index")); -const log = index_1.default('core-fs'); -function remove(file) { - if (!fs_extra_1.default.existsSync(file)) { - return log.warn(`${file} Directory or file does not exist, no need to delete`); - } - fs_extra_1.default.removeSync(file); - return log.success(`${file} successfully deleted`); -} -exports.default = remove; diff --git a/packages/cli/devkit/lib/git/index.d.ts b/packages/cli/devkit/lib/git/index.d.ts deleted file mode 100644 index 945b0397..00000000 --- a/packages/cli/devkit/lib/git/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import git from 'git-rev-sync'; -/** - * @exports aio-git - */ -export default git; diff --git a/packages/cli/devkit/lib/git/index.js b/packages/cli/devkit/lib/git/index.js deleted file mode 100644 index b9d02412..00000000 --- a/packages/cli/devkit/lib/git/index.js +++ /dev/null @@ -1,149 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const git_rev_sync_1 = __importDefault(require("git-rev-sync")); -const shelljs_1 = __importDefault(require("shelljs")); -const semver_1 = __importDefault(require("semver")); -const path = __importStar(require("path")); -const fs = __importStar(require("fs")); -const root = process.cwd(); -function getShortCommitId(dir) { - return git_rev_sync_1.default.long(dir).substr(0, 7); -} -const parseStatus = function (str) { - let branch_line; - const status = { - local_branch: null, - remote_branch: null, - remote_diff: null, - clean: true, - files: [], - }; - let result; - const initial_commit_rx = /^## Initial commit on ([^\n]+)\s?$/; - const lines = str.trim().split('\n'); - branch_line = lines.shift(); - result = branch_line.match(initial_commit_rx); - if (result) { - status.local_branch = result[1]; - return status; - } - branch_line = branch_line.replace(/##\s+/, ''); - const branches = branch_line.split('...'); - status.local_branch = branches[0]; - status.remote_diff = null; - if (branches[1]) { - result = branches[1].match(/^([^\s]+)/); - status.remote_branch = result[1]; - result = branches[1].match(/\[([^\]]+)\]/); - status.remote_diff = result ? result[1] : null; - } - lines.forEach((s) => { - if (s.match(/\S/)) { - status.files.push(s); - } - }); - status.clean = status.files.length === 0; - return status; -}; -/** - * 同步分支版本号到package中 - * 需满足条件 分支版本号格式为 {name}/x.y.z - * @param pkg pkg - */ -function syncVersion(cwd) { - cwd = cwd || root; - let branch = git_rev_sync_1.default.branch(cwd); - const branchArr = branch.split('/'); - if (branchArr && branchArr.length === 2) { - branch = branchArr[1]; - } - // 判断一下 是否是标准的 x.y.z格式 - if (semver_1.default.valid(branch)) { - try { - const pkgPath = path.resolve(cwd, 'package.json'); - const pkg = require(pkgPath); - pkg.version = branch; - fs.writeFileSync(path.resolve(cwd, 'package.json'), JSON.stringify(pkg, null, 2), { encoding: 'utf8' }); - return branch; - } - catch (e) { - return ''; - } - } - return ''; -} -/** - * 获取git的提交状态 - * return - * { local_branch: 'xxx', - remote_branch: null, - remote_diff: null, - clean: true/false, - files: [] - } - */ -git_rev_sync_1.default.status = function (cwd) { - cwd = cwd || root; - const result = (shelljs_1.default.exec('git status --porcelain -b', { silent: true, cwd }).stdout.toString() || '').trim(); - return parseStatus(result); -}; -/** - * 获取项目URL - * @returns {*} - */ -git_rev_sync_1.default.repository = function (cwd) { - cwd = cwd || root; - let repository; - try { - repository = (shelljs_1.default.exec('git config --get remote.origin.url', { silent: true, cwd }).stdout.toString() || '').trim(); - // 有些git的url是http开头的,需要格式化为git@格式,方便统一处理 - const match = repository.match(/^(http|https):\/\/(.*huawei\.com|github\.com)\/(.*)/); - if (match && match.length > 3) { - repository = `git@${match[2]}:${match[3]}`; - } - } - catch (err) { - console.error('git config 错误:', err.message); - } - return repository; -}; -/** - * 获取项目的project name 和 group name - */ -git_rev_sync_1.default.project = function (cwd) { - cwd = cwd || root; - const repository = git_rev_sync_1.default.repository(cwd); - const match = repository.match(/git@(.*):(.*)/); - if (match && match[2]) { - // 2222 是huawei git的额外路径 - return match[2].replace(/\.git|2222\//g, ''); - } -}; -git_rev_sync_1.default.short = getShortCommitId; -git_rev_sync_1.default.syncVersion = syncVersion; -/** - * @exports aio-git - */ -exports.default = git_rev_sync_1.default; diff --git a/packages/cli/devkit/lib/home/index.d.ts b/packages/cli/devkit/lib/home/index.d.ts deleted file mode 100644 index fe0ae471..00000000 --- a/packages/cli/devkit/lib/home/index.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 获取cli的home路径 - * AIO_HOME_FOLDER 作用:可以自定义aio的核心目录,方便开发第三方cli工具进行定制 - * AIO_HOME 作用:方便单元测试时更改目录结构 - * @returns {string} 返回路径字符串 - */ -export declare function getHomePath(): string; -/** - * 获取cli模块的安装路径 - * @returns {string} 返回路径字符串 - */ -export declare function getModulesPath(): string; -/** - * 初始化home目录,并将信息缓存至process.env中 - */ -export declare function initHomeDir(): void; -export interface clearResult { - success: boolean; - removePath: string; -} -/** - * 清理Home目录内容 - * 用户手工删除是没影响的,aio会验证并初始化 - * 返回删除成功与否 - */ -export declare function cleanHomeDir(): clearResult; -export declare const EntryModuleEnv = "AIO_ENTRY_MODULE"; -declare const _default: { - getHomePath: typeof getHomePath; - getModulesPath: typeof getModulesPath; - initHomeDir: typeof initHomeDir; - cleanHomeDir: typeof cleanHomeDir; - EntryModuleEnv: string; -}; -export default _default; diff --git a/packages/cli/devkit/lib/home/index.js b/packages/cli/devkit/lib/home/index.js deleted file mode 100644 index d7000b58..00000000 --- a/packages/cli/devkit/lib/home/index.js +++ /dev/null @@ -1,114 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.EntryModuleEnv = exports.cleanHomeDir = exports.initHomeDir = exports.getModulesPath = exports.getHomePath = void 0; -const debug_1 = __importDefault(require("debug")); -const path = __importStar(require("path")); -const fs = __importStar(require("fs-extra")); -const del = __importStar(require("del")); -const os = __importStar(require("os")); -const rimraf_1 = __importDefault(require("rimraf")); -const index_1 = require("../cli-config/index"); -const debug = debug_1.default('core-home'); -let userHomeFolder = ''; -let userHomePath = ''; -/** - * 获取cli的home路径 - * AIO_HOME_FOLDER 作用:可以自定义aio的核心目录,方便开发第三方cli工具进行定制 - * AIO_HOME 作用:方便单元测试时更改目录结构 - * @returns {string} 返回路径字符串 - */ -function getHomePath() { - userHomeFolder = process.env[index_1.PROCESS_ENV_HOME_FOLDE] || index_1.DEFAULT_HOME_FOLDER; - userHomePath = process.env[index_1.PROCESS_ENV_HOME_PATH] || os.homedir(); - return path.resolve(userHomePath, userHomeFolder); -} -exports.getHomePath = getHomePath; -/** - * 获取cli模块的安装路径 - * @returns {string} 返回路径字符串 - */ -function getModulesPath() { - const cliPath = getHomePath(); - const modulesPath = path.resolve(cliPath, 'node_modules'); - debug('aio module path = %s', modulesPath); - return modulesPath; -} -exports.getModulesPath = getModulesPath; -/** - * 初始化home目录,并将信息缓存至process.env中 - */ -function initHomeDir() { - const cliPath = getHomePath(); - if (!fs.existsSync(cliPath)) { - fs.mkdirsSync(cliPath); - } - // 缓存home信息到env里面 - if (!process.env[index_1.PROCESS_ENV_HOME_FOLDE]) { - process.env[index_1.PROCESS_ENV_HOME_FOLDE] = userHomeFolder; - } - if (!process.env[index_1.PROCESS_ENV_HOME_PATH]) { - process.env[index_1.PROCESS_ENV_HOME_PATH] = userHomePath; - } -} -exports.initHomeDir = initHomeDir; -/** - * 清理Home目录内容 - * 用户手工删除是没影响的,aio会验证并初始化 - * 返回删除成功与否 - */ -function cleanHomeDir() { - const homePath = getHomePath(); - const cliModulesPath = getModulesPath(); - let result = { - success: true, - removePath: cliModulesPath, - }; - if (fs.existsSync(cliModulesPath)) { - // 清除aio.*.json的配置文件 - const paths = del.sync([`aio.*.json`, `package.json`, `*.yaml`, 'package-lock.json'], { - cwd: homePath, - }); - debug('clear aio.*.json = %o', paths); - // windows下可能存在路径过长无法清除的情况,报错后提示手动删除 - try { - rimraf_1.default.sync(cliModulesPath); - } - catch (e) { - result.success = false; - console.error(`${cliModulesPath} 删除失败,请手动删除该文件夹!`); - } - debug('remove aio modules path = %s', cliModulesPath); - } - return result; -} -exports.cleanHomeDir = cleanHomeDir; -exports.EntryModuleEnv = 'AIO_ENTRY_MODULE'; -exports.default = { - getHomePath, - getModulesPath, - initHomeDir, - cleanHomeDir, - EntryModuleEnv: exports.EntryModuleEnv, -}; diff --git a/packages/cli/devkit/lib/index.d.ts b/packages/cli/devkit/lib/index.d.ts deleted file mode 100644 index bf3f7998..00000000 --- a/packages/cli/devkit/lib/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export { default as argv } from './argv'; -export { default as cache } from './cache'; -export { default as cliConfig } from './cli-config'; -export { default as config } from './config'; -export { default as env } from './env'; -export { default as error } from './error'; -export { default as fs } from './fs'; -export { default as home } from './home'; -export { default as Intl } from './intl'; -export { default as logs } from './log'; -export { default as modules } from './module'; -export { default as npm } from './npm'; -export { default as report } from './report'; -export { default as task } from './task'; -export { default as upgrade } from './upgrade'; -export { default as git } from './git/index'; -export { default as user } from './user'; diff --git a/packages/cli/devkit/lib/index.js b/packages/cli/devkit/lib/index.js deleted file mode 100644 index 50978f2b..00000000 --- a/packages/cli/devkit/lib/index.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var argv_1 = require("./argv"); -Object.defineProperty(exports, "argv", { enumerable: true, get: function () { return argv_1.default; } }); -var cache_1 = require("./cache"); -Object.defineProperty(exports, "cache", { enumerable: true, get: function () { return cache_1.default; } }); -var cli_config_1 = require("./cli-config"); -Object.defineProperty(exports, "cliConfig", { enumerable: true, get: function () { return cli_config_1.default; } }); -var config_1 = require("./config"); -Object.defineProperty(exports, "config", { enumerable: true, get: function () { return config_1.default; } }); -var env_1 = require("./env"); -Object.defineProperty(exports, "env", { enumerable: true, get: function () { return env_1.default; } }); -var error_1 = require("./error"); -Object.defineProperty(exports, "error", { enumerable: true, get: function () { return error_1.default; } }); -var fs_1 = require("./fs"); -Object.defineProperty(exports, "fs", { enumerable: true, get: function () { return fs_1.default; } }); -var home_1 = require("./home"); -Object.defineProperty(exports, "home", { enumerable: true, get: function () { return home_1.default; } }); -var intl_1 = require("./intl"); -Object.defineProperty(exports, "Intl", { enumerable: true, get: function () { return intl_1.default; } }); -var log_1 = require("./log"); -Object.defineProperty(exports, "logs", { enumerable: true, get: function () { return log_1.default; } }); -var module_1 = require("./module"); -Object.defineProperty(exports, "modules", { enumerable: true, get: function () { return module_1.default; } }); -var npm_1 = require("./npm"); -Object.defineProperty(exports, "npm", { enumerable: true, get: function () { return npm_1.default; } }); -var report_1 = require("./report"); -Object.defineProperty(exports, "report", { enumerable: true, get: function () { return report_1.default; } }); -var task_1 = require("./task"); -Object.defineProperty(exports, "task", { enumerable: true, get: function () { return task_1.default; } }); -var upgrade_1 = require("./upgrade"); -Object.defineProperty(exports, "upgrade", { enumerable: true, get: function () { return upgrade_1.default; } }); -var index_1 = require("./git/index"); -Object.defineProperty(exports, "git", { enumerable: true, get: function () { return index_1.default; } }); -var user_1 = require("./user"); -Object.defineProperty(exports, "user", { enumerable: true, get: function () { return user_1.default; } }); diff --git a/packages/cli/devkit/lib/intl/index.d.ts b/packages/cli/devkit/lib/intl/index.d.ts deleted file mode 100644 index ff22b286..00000000 --- a/packages/cli/devkit/lib/intl/index.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { intlMessage, LocaleType } from './interfaces'; -export default class Intl { - message: intlMessage; - locale: LocaleType; - constructor(message: intlMessage, locale?: LocaleType); - /** - * 初始化语言文件 - */ - initLocale(): void; - /** - * 获取语言信息 - * @returns 返回当前设置的多语言类型 - */ - getLocale(): LocaleType; - /** - * 设置语言信息 - * @param {locale} 多语言类型 - */ - setLocale(locale: LocaleType): void; - /** - * 获取所需的语言 - * @param key - * @param values 语言中的变量信息 - */ - get(key: string, values?: object): string; -} diff --git a/packages/cli/devkit/lib/intl/index.js b/packages/cli/devkit/lib/intl/index.js deleted file mode 100644 index bd499c44..00000000 --- a/packages/cli/devkit/lib/intl/index.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @desc: 多语言国际化文案处理类 - * @author: 华宇果 - */ -const fs_extra_1 = __importDefault(require("fs-extra")); -const intl_messageformat_1 = __importDefault(require("intl-messageformat")); -const osLocale = __importStar(require("os-locale")); -const path = __importStar(require("path")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = require("../cli-config/index"); -const interfaces_1 = require("./interfaces"); -const log = index_2.default('core-intl'); -/** - * 缓存的locale变量 - */ -let cacheLocale; -class Intl { - constructor(message, locale) { - this.message = message; - this.locale = locale || this.getLocale(); - } - /** - * 初始化语言文件 - */ - initLocale() { - // 如果有全局语言文件的话,则退出 - const localeGlobal = process.env[index_3.PROCESS_ENV_LOCALE]; - if (localeGlobal) - return; - const localeFile = path.join(index_1.default.getHomePath(), index_3.FILE_LOCALE); - // 初始化,获取本地电脑的语言环境 - if (!fs_extra_1.default.existsSync(localeFile)) { - const sysLocale = osLocale.sync() || 'zh'; - const localLocale = interfaces_1.LocaleType[sysLocale.substr(0, 2)] || interfaces_1.LocaleType.ZH; - this.setLocale(localLocale); - } - } - /** - * 获取语言信息 - * @returns 返回当前设置的多语言类型 - */ - getLocale() { - // 如果有环境变量,则优先使用环境变量的值 - const localeGlobal = process.env[index_3.PROCESS_ENV_LOCALE]; - if (localeGlobal && interfaces_1.LocaleType[localeGlobal]) - return interfaces_1.LocaleType[localeGlobal]; - // 由于该方法调用频繁,在这里使用一个cache对象做为缓存,避免频繁的IO操作 - let localeData = { locale: interfaces_1.LocaleType.ZH }; - if (cacheLocale) { - localeData = cacheLocale; - } - else { - const localeFile = path.join(index_1.default.getHomePath(), index_3.FILE_LOCALE); - if (fs_extra_1.default.existsSync(localeFile)) { - localeData = fs_extra_1.default.readJsonSync(localeFile); - cacheLocale = localeData; - } - } - return localeData.locale; - } - /** - * 设置语言信息 - * @param {locale} 多语言类型 - */ - setLocale(locale) { - const localeFile = path.join(index_1.default.getHomePath(), index_3.FILE_LOCALE); - const localeData = { - locale, - }; - log.debug('set aio locale data : %o', localeData); - log.debug('set aio to : %s', localeFile); - cacheLocale = null; - fs_extra_1.default.outputJsonSync(localeFile, localeData); - } - /** - * 获取所需的语言 - * @param key - * @param values 语言中的变量信息 - */ - get(key, values) { - const localeMessage = this.message[this.locale]; - let msg = !localeMessage ? this.message[interfaces_1.LocaleType.ZH][key] : localeMessage[key]; - if (msg) { - msg = new intl_messageformat_1.default(msg, this.locale); - return msg.format(values); - } - log.warn(`intl key : ${key} not defined!`); - log.debug('message = %o', this.message); - return ''; - } -} -exports.default = Intl; diff --git a/packages/cli/devkit/lib/intl/interfaces.d.ts b/packages/cli/devkit/lib/intl/interfaces.d.ts deleted file mode 100644 index 88566c48..00000000 --- a/packages/cli/devkit/lib/intl/interfaces.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 多语言文案格式 - */ -export interface intlMessage { - zh: object; - en?: object; -} -/** - * 可选的多语言文案 - */ -export declare enum LocaleType { - ZH = "zh", - EN = "en" -} -export interface CacheLocale { - locale: LocaleType; -} diff --git a/packages/cli/devkit/lib/intl/interfaces.js b/packages/cli/devkit/lib/intl/interfaces.js deleted file mode 100644 index fd9f8009..00000000 --- a/packages/cli/devkit/lib/intl/interfaces.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LocaleType = void 0; -/** - * 可选的多语言文案 - */ -var LocaleType; -(function (LocaleType) { - LocaleType["ZH"] = "zh"; - LocaleType["EN"] = "en"; -})(LocaleType = exports.LocaleType || (exports.LocaleType = {})); diff --git a/packages/cli/devkit/lib/log/helpers/logger-test.d.ts b/packages/cli/devkit/lib/log/helpers/logger-test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/log/helpers/logger-test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/log/helpers/logger-test.js b/packages/cli/devkit/lib/log/helpers/logger-test.js deleted file mode 100644 index 28da3981..00000000 --- a/packages/cli/devkit/lib/log/helpers/logger-test.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../index")); -const log = index_1.default('core-module'); -log.info('info message'); -log.error('error-log'); -log.error(new Error('an error')); -log.warn('warn message'); -log.info({ a: 1 }); -log.info('a', 'b', 'c'); -log.debug('debug message'); diff --git a/packages/cli/devkit/lib/log/index.d.ts b/packages/cli/devkit/lib/log/index.d.ts deleted file mode 100644 index a07d5f97..00000000 --- a/packages/cli/devkit/lib/log/index.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -interface ILogger { - info(...args: any[]): void; - success(...args: any[]): void; - warn(...args: any[]): void; - error(...args: any[]): void; - debug(...args: any[]): void; -} -declare const _default: (label: string) => ILogger; -/** - * 基于winston输出日志 - * @param label: 标签,一般用于定位该日志是哪个模块输出的 - */ -export default _default; diff --git a/packages/cli/devkit/lib/log/index.js b/packages/cli/devkit/lib/log/index.js deleted file mode 100644 index c28f3dee..00000000 --- a/packages/cli/devkit/lib/log/index.js +++ /dev/null @@ -1,130 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __rest = (this && this.__rest) || function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const debug_1 = __importDefault(require("debug")); -const path = __importStar(require("path")); -const winston_1 = require("winston"); -const index_1 = __importDefault(require("../home/index")); -const process = __importStar(require("process")); -const { combine, timestamp, colorize } = winston_1.format; -/** - * 格式化额外信息 - * @param {*} meta - * @returns - */ -const formatMeta = (meta) => { - // You can format the splat yourself - const splat = meta[Symbol.for('splat')]; - let msg = ''; - if (splat && splat.length) { - try { - msg = splat.length === 1 ? JSON.stringify(splat[0]) : JSON.stringify(splat); - } - catch (e) { - console.error(e); - } - } - return msg; -}; -const formatMessage = winston_1.format.printf((info) => { - const { level, message, label, timestamp, stack } = info, metadata = __rest(info, ["level", "message", "label", "timestamp", "stack"]); - let output = message; - // @ts-ignore - if (message instanceof Error) { - output = message.stack || message; - } - else if (typeof message === 'object') { - output = JSON.stringify(message); - } - if (stack) { - output += '\n' + stack; - } - return `${timestamp} [${label}]: ${output} ${formatMeta(metadata)}`; -}); -// 单例化logger对象,各文件间共享 -let _logger; -function loggerSingleton() { - if (_logger) { - return _logger; - } - else { - // 定义一个全局变量用于改变log存放位置,也方便测试使用。 - const homePath = process.env.AIO_LOG_PATH || path.join(index_1.default.getHomePath(), 'log'); - _logger = winston_1.createLogger({ - level: 'verbose', - format: combine(timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), formatMessage), - transports: [ - // console输出加个颜色 - new winston_1.transports.Console({ - format: combine(colorize({ all: true, colors: { info: 'magenta', verbose: 'green' } })), - }), - // warn/error level的打印到文件 - new winston_1.transports.File({ - filename: path.join(homePath, `${new Date().toISOString().split('T')[0]}.log`), - level: 'warn', - }), - ], - }); - return _logger; - } -} -/** - * 基于winston输出日志 - * @param label: 标签,一般用于定位该日志是哪个模块输出的 - */ -exports.default = (label) => { - return (function () { - const methodLevels = ['error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly']; - const wLogger = {}; - methodLevels.forEach((level) => { - wLogger[level] = function () { - const args = [...arguments]; - const message = args.length === 1 ? args[0] : args; - // debug模式下继续使用debug包在命令行输出 - if (level === 'debug') { - return debug_1.default(label).apply(null, args); - } - loggerSingleton().log({ - level, - label, - message, - }); - }; - }); - // 兼容原有success方法输出 - wLogger.success = wLogger.verbose; - return wLogger; - })(); -}; diff --git a/packages/cli/devkit/lib/log/index.test.d.ts b/packages/cli/devkit/lib/log/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/log/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/log/index.test.js b/packages/cli/devkit/lib/log/index.test.js deleted file mode 100644 index 756057c3..00000000 --- a/packages/cli/devkit/lib/log/index.test.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ava_1 = __importDefault(require("ava")); -const shelljs_1 = __importDefault(require("shelljs")); -const path = __importStar(require("path")); -const fs = __importStar(require("fs-extra")); -const process_1 = __importDefault(require("process")); -const logPath = path.join(__dirname, 'helpers/log'); -ava_1.default.before(() => { - process_1.default.env.AIO_LOG_PATH = logPath; -}); -ava_1.default.after(() => { - fs.removeSync(logPath); -}); -ava_1.default('# level检查CLI输出是否正确', (t) => { - const targetScript = path.join(__dirname, 'helpers', 'logger-test.js'); - const result = shelljs_1.default.exec(`node ${targetScript}`, { stdio: 'pipe' }).stdout.toString(); - // 包含label - t.true(result.includes('[core-module]')); - // 打印字符串 - t.true(result.includes('info message')); - // 打印对象 - t.true(result.includes('{"a":1}')); - // 打印错误 - t.true(result.includes('Error: an error')); - t.true(result.includes('at Object.')); - // 打印多个参数 - t.true(result.includes('["a","b","c"]')); - // debug不打印出来 - t.false(result.includes('debug message')); -}); -ava_1.default('# level检查LOG文件输出是否正确', (t) => { - const targetScript = path.join(__dirname, 'helpers', 'logger-test.js'); - shelljs_1.default.exec(`node ${targetScript}`, { stdio: 'pipe' }); - const logFile = path.join(logPath, `${new Date().toISOString().split('T')[0]}.log`); - const result = fs.readFileSync(logFile); - // 包含label - t.true(result.includes('[core-module]')); - // 不打印字符串 - t.false(result.includes('info message')); - // 不打印对象 - t.false(result.includes('{"a":1}')); - // 不打印多个参数 - t.false(result.includes('["a","b","c"]')); - // 不打印debug - t.false(result.includes('debug message')); - // 打印错误 - t.true(result.includes('Error: an error')); - t.true(result.includes('at Object.')); - // 打印warn - t.true(result.includes('warn message')); -}); diff --git a/packages/cli/devkit/lib/module/get.d.ts b/packages/cli/devkit/lib/module/get.d.ts deleted file mode 100644 index 9df80d34..00000000 --- a/packages/cli/devkit/lib/module/get.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * 获取 cli 插件或套件包逻辑 - * @param name 完整的模块名,如 @opentiny/cli-toolkit-xxx - * @returns {*} - */ -declare function get(name: string): Promise; -export default get; diff --git a/packages/cli/devkit/lib/module/get.js b/packages/cli/devkit/lib/module/get.js deleted file mode 100644 index 0b943be1..00000000 --- a/packages/cli/devkit/lib/module/get.js +++ /dev/null @@ -1,162 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../cache/index")); -const index_2 = __importDefault(require("../home/index")); -const index_3 = __importDefault(require("../intl/index")); -const index_4 = __importDefault(require("../log/index")); -const index_5 = __importDefault(require("../npm/index")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const semver_1 = __importDefault(require("semver")); -const install_one_1 = __importDefault(require("./install-one")); -const utils_1 = __importDefault(require("./utils")); -const index_6 = __importDefault(require("./locale/index")); -const getEsModule_1 = __importDefault(require("./getEsModule")); -const index_7 = __importDefault(require("../error/index")); -const log = index_4.default('core-module'); -/** - * 設置緩存 - * @param name 模塊名稱 - */ -function setCache(name) { - index_1.default.set(`${utils_1.default.UPDATE_CHECK_PRE}${name}`, true, { - expires: utils_1.default.NO_TIP_PERIOD, - }); -} -/** - * 获取 cli 插件或套件包逻辑 - * @param name 完整的模块名,如 @opentiny/cli-toolkit-xxx - * @returns {*} - */ -async function get(name) { - let returnPkg = false; - const intl = new index_3.default(index_6.default); - if (/\/package\.json$/.test(name)) { - name = name.replace('/package.json', ''); - returnPkg = true; - } - const modulePath = path.resolve(index_2.default.getModulesPath(), name); - const pkgPath = path.resolve(modulePath, 'package.json'); - if (fs_extra_1.default.existsSync(pkgPath)) { - log.debug(`存在本地模块 ${pkgPath}`); - const cacheKey = `${utils_1.default.UPDATE_CHECK_PRE}${name}`; - const needUpdate = !index_1.default.get(cacheKey); - log.debug(`key: ${cacheKey} , 判断是否需要更新 ${needUpdate}`); - // 本地存在, 判断是否需要更新 - if (needUpdate) { - // 获取最新版本 - const lastPkg = await index_5.default.latest(name); - const localPkg = fs_extra_1.default.readJsonSync(pkgPath); - // 如果有执行了安装或更新的,这里就无须再设置缓存提示了,因为执行安装或更新后已经设置了一遍 - let isNeedSetCache = true; - // 有可能网络错误,这里进行判断一下看是否需要再进行更新操作 - if (lastPkg) { - if (semver_1.default.lt(localPkg.version, lastPkg.version, true)) { - if (localPkg.aioOption && localPkg.aioOption.update) { - // 自动更新 - log.info(intl.get('autoUpdate', { name })); - await install_one_1.default(name, { - type: 'update', - localPkg, - lastPkg, - }); - isNeedSetCache = false; - } - else { - // 末位版本自动更新操作 - let autoZVersion = ''; - if (lastPkg.changeLog) { - // 在 changeLog 里面检测是否有末位更新的版本 - lastPkg.changeLog = lastPkg.changeLog.sort((a, b) => semver_1.default.lt(a.version, b.version) ? 1 : -1); - for (let j = 0; j < lastPkg.changeLog.length; j += 1) { - if (semver_1.default.satisfies(lastPkg.changeLog[j].version, `~${localPkg.version}`) && - lastPkg.changeLog[j].version !== localPkg.version) { - autoZVersion = lastPkg.changeLog[j].version; - break; - } - } - } - if (autoZVersion) { - log.info(intl.get('autoUpdateZ', { - localVersion: localPkg.version, - autoZVersion, - })); - const comPkg = await index_5.default.latest(name, { - version: autoZVersion, - }); - await install_one_1.default(name, { - type: 'update', - localPkg, - lastPkg: comPkg, - }); - isNeedSetCache = false; - } - if (!autoZVersion || semver_1.default.lt(autoZVersion, lastPkg.version)) { - // 更新提示 - // 如果 autoZVersion 有值,那么去获取安装完后的 package.json 文件 - const newLocalPkg = autoZVersion ? fs_extra_1.default.readJsonSync(pkgPath) : localPkg; - utils_1.default.updateLog(name, { - localPkg: newLocalPkg, - lastPkg, - level: 'warn', - }); - } - // 设置缓存, 1天内不再检查 - if (isNeedSetCache) { - setCache(name); - } - } - } - else { - setCache(name); - } - } - } - } - else { - log.info(intl.get('autoInstall', { name })); - await install_one_1.default(name); - } - const pkg = fs_extra_1.default.readJsonSync(pkgPath, { throws: false }) || {}; - let mod; - try { - mod = getEsModule_1.default(require(modulePath)); - } - catch (e) { - mod = {}; - index_7.default(e); - // log.error(intl.get('getModuleErr', { modulePath })); - // log.error(e); - throw e; - } - // TODO 发送log记录,由于调用插件时,也会调用到套件,所以这里只有插件调用的时候才发送log - // const pluginPrefix = utils.pluginPrefix(); - // if (!returnPkg && name.indexOf(pluginPrefix) !== -1) { - // log.debug(`${name} 插件开始发送日志...`); - // report.module(utils.fullName(name)); - // } - return returnPkg ? pkg : mod; -} -exports.default = get; diff --git a/packages/cli/devkit/lib/module/getEsModule.d.ts b/packages/cli/devkit/lib/module/getEsModule.d.ts deleted file mode 100644 index b3740576..00000000 --- a/packages/cli/devkit/lib/module/getEsModule.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (fn: any) => any; -export default _default; diff --git a/packages/cli/devkit/lib/module/getEsModule.js b/packages/cli/devkit/lib/module/getEsModule.js deleted file mode 100644 index 07d3ee77..00000000 --- a/packages/cli/devkit/lib/module/getEsModule.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = (fn) => { - if (!fn) { - return; - } - return fn.default || fn; -}; diff --git a/packages/cli/devkit/lib/module/getReallyName.d.ts b/packages/cli/devkit/lib/module/getReallyName.d.ts deleted file mode 100644 index ae0630b1..00000000 --- a/packages/cli/devkit/lib/module/getReallyName.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 返回的模块信息 - */ -export interface ModuleInfo { - exist: boolean; - isUseModule: boolean; - reallyName: string; -} -/** - * 获取实际可执行的套件或插件名称 - * 获取逻辑: 自定义本地套件/插件 -> cli本地套件/插件 -> 自定义线上套件/插件 -> cli线上套件/插件 - * @param name 套件或插件名,传入的是完整,必须带上 toolkit 或 plugin - */ -export default function (name: string): Promise; diff --git a/packages/cli/devkit/lib/module/getReallyName.js b/packages/cli/devkit/lib/module/getReallyName.js deleted file mode 100644 index 6cb911b9..00000000 --- a/packages/cli/devkit/lib/module/getReallyName.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../log/index")); -const local_exist_1 = __importDefault(require("./local-exist")); -const online_exist_1 = __importDefault(require("./online-exist")); -const index_2 = require("../cli-config/index"); -const utils_1 = __importDefault(require("./utils")); -const log = index_1.default('core-module'); -/** - * 获取实际可执行的套件或插件名称 - * 获取逻辑: 自定义本地套件/插件 -> cli本地套件/插件 -> 自定义线上套件/插件 -> cli线上套件/插件 - * @param name 套件或插件名,传入的是完整,必须带上 toolkit 或 plugin - */ -async function default_1(name) { - // TODO 校验name的格式 - const prefix = utils_1.default.prefix(); - const scope = index_2.getScope(); - // 如果是自定义prefix的插件 - const isCustomPrefix = prefix !== index_2.DEFAULT_BIN; - // 是否使用的是aio插件 - let isUseModule = false; - // aio模块名称 @cloud/{yy}-plugin-xxx - const aioName = name.replace(scope, index_2.DEFAULT_SCOPE).replace(prefix, index_2.DEFAULT_BIN); - // 实际调用的插件名 - let reallyName = name; - // 执行插件的方法 - let exist = local_exist_1.default(name); - log.debug(`本地 ${name} 模块: ${exist}`); - if (!exist) { - // 判断一下是不是自定义prefix的情况 - // 是的话走下面的逻辑 - if (isCustomPrefix) { - exist = local_exist_1.default(aioName); - log.debug(`本地aio ${aioName} 模块: ${exist}`); - if (!exist) { - // 查找线上版本 - exist = await online_exist_1.default(name); - log.debug(`线上 ${name} 模块: ${exist}`); - if (!exist) { - exist = await online_exist_1.default(aioName); - log.debug(`线上aio ${aioName} 模块: ${exist}`); - if (exist) { - // 如果存在,则返回真实获取的名称 - reallyName = aioName; - isUseModule = true; - } - } - } - else { - reallyName = aioName; - isUseModule = true; - } - } - else { - exist = await online_exist_1.default(name); - log.debug(`线上 ${name} 模块: ${exist}`); - } - } - const moduleInfo = { - exist, - isUseModule, - reallyName, - }; - log.debug('当前实际的模块信息 %o', moduleInfo); - return moduleInfo; -} -exports.default = default_1; diff --git a/packages/cli/devkit/lib/module/index.d.ts b/packages/cli/devkit/lib/module/index.d.ts deleted file mode 100644 index 79f898a0..00000000 --- a/packages/cli/devkit/lib/module/index.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import get from './get'; -import getReallyName from './getReallyName'; -import installOne from './install-one'; -import localExist from './local-exist'; -import localList from './local-list'; -import onlineExist from './online-exist'; -import onlineList from './online-list'; -import update from './update'; -declare const _default: { - get: typeof get; - getReallyName: typeof getReallyName; - localExist: typeof localExist; - onlineExist: typeof onlineExist; - localList: typeof localList; - onlineList: typeof onlineList; - installOne: typeof installOne; - update: typeof update; - getEsModule: (fn: any) => any; - utils: { - moduleFilter(list: any, type: string): any; - toolkitPrefix: () => string; - pluginPrefix: () => string; - toolkitFullName: (name: string) => string; - pluginFullName: (name: string) => string; - fullName: (name: string) => string; - prefix: () => string; - UPDATE_CHECK_PRE: string; - ONLINE_MODULE_CACHE_KEY_IN: string; - ONLINE_MODULE_CACHE_KEY_OUT: string; - updateLog: (name: string, opt?: any) => void; - addModuleToDependencies: (cwd: string, name: string, version: string) => void; - removeModuleToDependencies: (cwd: string, name: string) => void; - NO_TIP_PERIOD: number; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/module/index.js b/packages/cli/devkit/lib/module/index.js deleted file mode 100644 index 7dec5755..00000000 --- a/packages/cli/devkit/lib/module/index.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const get_1 = __importDefault(require("./get")); -const getEsModule_1 = __importDefault(require("./getEsModule")); -const getReallyName_1 = __importDefault(require("./getReallyName")); -const install_one_1 = __importDefault(require("./install-one")); -const local_exist_1 = __importDefault(require("./local-exist")); -const local_list_1 = __importDefault(require("./local-list")); -const online_exist_1 = __importDefault(require("./online-exist")); -const online_list_1 = __importDefault(require("./online-list")); -const update_1 = __importDefault(require("./update")); -const utils_1 = __importDefault(require("./utils")); -exports.default = { - get: get_1.default, - getReallyName: getReallyName_1.default, - localExist: local_exist_1.default, - onlineExist: online_exist_1.default, - localList: local_list_1.default, - onlineList: online_list_1.default, - installOne: install_one_1.default, - update: update_1.default, - getEsModule: getEsModule_1.default, - utils: utils_1.default, -}; diff --git a/packages/cli/devkit/lib/module/index.test.d.ts b/packages/cli/devkit/lib/module/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/module/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/module/index.test.js b/packages/cli/devkit/lib/module/index.test.js deleted file mode 100644 index b2f45a8e..00000000 --- a/packages/cli/devkit/lib/module/index.test.js +++ /dev/null @@ -1,92 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __importStar(require("path")); -const ava_1 = __importDefault(require("ava")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = __importDefault(require("./index")); -const index_3 = require("../cli-config/index"); -const chai_1 = require("chai"); -const mockCwd = path.resolve(__dirname); -const homeFolder = 'fixtures'; -/** - * 创建一个虚拟模块 - * @param name 模块名 - */ -function createPackage(name) { - const pkg = { - name, - version: '1.0.0', - description: name, - main: 'index.js', - }; - const homeModulePath = index_1.default.getModulesPath(); - const modulePath = path.join(homeModulePath, name); - fs_extra_1.default.ensureDirSync(modulePath); - fs_extra_1.default.outputJsonSync(path.join(modulePath, 'package.json'), pkg); - // fs.copySync(path.join(mockCwd, homeFolder, 'index.js'), path.join(modulePath, 'index.js')); -} -// function clearPackage() { -// fs.removeSync(path.join(home.getHomePath(), FILE_CACHE)); -// fs.removeSync(home.getModulesPath()); -// } -/** - * 初始化环境 - */ -function initConfig() { - process.env[index_3.PROCESS_ENV_HOME_PATH] = mockCwd; - process.env[index_3.PROCESS_ENV_HOME_FOLDE] = homeFolder; - process.env[index_3.PROCESS_ENV_BIN] = 'hugo'; - createPackage('hugo-toolkit-abc'); - createPackage('hugo-plugin-defg'); -} -ava_1.default.beforeEach(() => { - initConfig(); -}); -ava_1.default.afterEach(() => { - // clearPackage(); -}); -ava_1.default('# 从线上 获取 一个模块', async (t) => { - // 从线上获取 - const data = await index_2.default.get('hugo-toolkit-empty-module'); - chai_1.expect(data).to.be.an('object').to.have.property('start'); - t.pass(); -}); -// test.only('# 从内网获取一个模块', async t => { -// // 从线上获取 -// const data = await module.get('@cui/hybrid-interface'); -// expect(data) -// .to.be.an('object') -// .to.have.property('start'); -// t.pass() -// }); -// test('# 获取本地mock aio 插件或套件', async t => { -// // 从线上获取 -// const data = module.get('hugo-toolkit-abc'); -// expect(data) -// .to.be.an('object') -// .to.have.property('start'); -// t.pass(); -// }); diff --git a/packages/cli/devkit/lib/module/install-one.d.ts b/packages/cli/devkit/lib/module/install-one.d.ts deleted file mode 100644 index 99c4bd93..00000000 --- a/packages/cli/devkit/lib/module/install-one.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * - * @param name 模块名称,可能的格式{modulename}@{version} or {modulename} - * @param options - */ -declare function installOne(name: string, options?: any): Promise; -export default installOne; diff --git a/packages/cli/devkit/lib/module/install-one.js b/packages/cli/devkit/lib/module/install-one.js deleted file mode 100644 index 53d429ad..00000000 --- a/packages/cli/devkit/lib/module/install-one.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../cache/index")); -const index_2 = __importDefault(require("../home/index")); -const index_3 = __importDefault(require("../intl/index")); -const index_4 = __importDefault(require("../log/index")); -const index_5 = __importDefault(require("../npm/index")); -const index_6 = __importDefault(require("./locale/index")); -const utils_1 = __importDefault(require("./utils")); -const index_7 = require("../cli-config/index"); -const log = index_4.default('core-module'); -/** - * - * @param name 模块名称,可能的格式{modulename}@{version} or {modulename} - * @param options - */ -async function installOne(name, options) { - const prefix = utils_1.default.prefix(); - const homeCwd = index_2.default.getHomePath(); - const scope = index_7.getScope(); - let version = 'latest'; - const intl = new index_3.default(index_6.default); - let pureName = ''; - options = Object.assign({ type: 'install' }, options); - // 匹配套件名称,其中需要判断前缀是否是自定义的 - let match = name.match(new RegExp(`^(@${scope}/)?([A-Za-z0-9_-]*)-(toolkit|plugin)-`)); - if (!match && scope != index_7.DEFAULT_SCOPE) { - match = name.match(new RegExp(`^(@${index_7.DEFAULT_SCOPE}/)?([A-Za-z0-9_-]*)-(toolkit|plugin)-`)); - } - // 判断逻辑:前缀存在 且 前缀为自定义设置的 或者前缀是aio - if (!(match && match[2] && (match[2] === prefix || match[2] === index_7.DEFAULT_BIN))) { - log.error(intl.get('importPkgError')); - return; - } - // 判断是否带了 @版本号 - if (!new RegExp(`^(@${scope}/)?.+@.+$`).test(name)) { - // 没带版本号 - pureName = name; - // TODO option值哪里来 - if (options.lastPkg && options.lastPkg.version) { - version = options.lastPkg.version; - } - name += `@${version}`; - } - else { - const nameArr = name.split('@'); - version = nameArr.pop() || 'latest'; - pureName = nameArr.join('@'); - } - // 开始安装 - log.debug(`开始安装 ${name}`); - utils_1.default.addModuleToDependencies(homeCwd, pureName, version); - try { - await index_5.default.installDependencies({ - cwd: homeCwd, - }); - } - catch (e) { - utils_1.default.removeModuleToDependencies(homeCwd, pureName); - log.error(intl.get('installError', { name: pureName })); - log.error(e); - process.exit(1); - } - // 设置缓存, 1天内不再检查 - index_1.default.set(`${utils_1.default.UPDATE_CHECK_PRE}${pureName}`, true, { - expires: utils_1.default.NO_TIP_PERIOD, - }); - // 提示安装成功 - if (options.type === 'install') { - log.success(intl.get('installSuccess', { name: pureName })); - return; - } - log.success(intl.get('updateSuccess', { name: pureName })); - // 打印更新日志 - if (!options.lastPkg) { - options.lastPkg = await index_5.default.latest(pureName); - } - if (!options.lastPkg) { - return; - } - utils_1.default.updateLog(pureName, { - localPkg: options.localPkg, - lastPkg: options.lastPkg, - level: 'success', - }); -} -exports.default = installOne; diff --git a/packages/cli/devkit/lib/module/local-exist.d.ts b/packages/cli/devkit/lib/module/local-exist.d.ts deleted file mode 100644 index 2345e3ab..00000000 --- a/packages/cli/devkit/lib/module/local-exist.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * 模块是否存在 - */ -declare function localExist(name: string): boolean; -export default localExist; diff --git a/packages/cli/devkit/lib/module/local-exist.js b/packages/cli/devkit/lib/module/local-exist.js deleted file mode 100644 index e8ed4945..00000000 --- a/packages/cli/devkit/lib/module/local-exist.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../home/index")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -/** - * 模块是否存在 - */ -function localExist(name) { - const modulePath = path.resolve(index_1.default.getModulesPath(), name); - const pkgPath = path.resolve(modulePath, 'package.json'); - return fs_extra_1.default.existsSync(pkgPath); -} -exports.default = localExist; diff --git a/packages/cli/devkit/lib/module/local-list.d.ts b/packages/cli/devkit/lib/module/local-list.d.ts deleted file mode 100644 index 4087fcdc..00000000 --- a/packages/cli/devkit/lib/module/local-list.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @desc: 本地模块列表 - */ -/** - * 列出所有本地模块 - * @param options object {type (按类型筛选): 'toolkit | plugin'} - * @returns {Array} - */ -declare function localList(options?: any): any[]; -export default localList; diff --git a/packages/cli/devkit/lib/module/local-list.js b/packages/cli/devkit/lib/module/local-list.js deleted file mode 100644 index 5041c130..00000000 --- a/packages/cli/devkit/lib/module/local-list.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; -/** - * @desc: 本地模块列表 - */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../home/index")); -const index_2 = __importDefault(require("../log/index")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const utils_1 = __importDefault(require("./utils")); -const log = index_2.default('core-module'); -/** - * 列出所有本地模块 - * @param options object {type (按类型筛选): 'toolkit | plugin'} - * @returns {Array} - */ -function localList(options) { - options = options || {}; - const modulesPath = index_1.default.getModulesPath(); - let modulePkgs = []; - const homePath = index_1.default.getHomePath(); - const homePkgPath = path.resolve(homePath, 'package.json'); - if (fs_extra_1.default.existsSync(homePkgPath)) { - const homePkg = fs_extra_1.default.readJsonSync(homePkgPath); - if (homePkg.dependencies) { - Object.keys(homePkg.dependencies).forEach((item) => { - const pkgPath = path.resolve(modulesPath, item, 'package.json'); - if (fs_extra_1.default.existsSync(pkgPath)) { - const modPkg = fs_extra_1.default.readJsonSync(pkgPath); - modulePkgs.push({ - name: modPkg.name, - description: modPkg.description, - chName: modPkg.aioOption && modPkg.aioOption.chName ? modPkg.aioOption.chName : modPkg.description, - }); - } - }); - } - } - modulePkgs = options.type ? utils_1.default.moduleFilter(modulePkgs, options.type) : modulePkgs; - log.debug('所有本地模块: %o', modulePkgs); - return modulePkgs; -} -exports.default = localList; diff --git a/packages/cli/devkit/lib/module/locale/index.d.ts b/packages/cli/devkit/lib/module/locale/index.d.ts deleted file mode 100644 index d8678c5c..00000000 --- a/packages/cli/devkit/lib/module/locale/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * 语言文件 - */ -declare const _default: { - zh: { - autoUpdate: string; - autoUpdateZ: string; - autoInstall: string; - importPkgError: string; - installSuccess: string; - updateSuccess: string; - updateNone: string; - updateTo: string; - updateVersion: string; - localVersion: string; - updateTips: string; - recommendVersion: string; - recommendInstall: string; - includeUpdate: string; - installError: string; - getModuleErr: string; - }; - en: { - autoUpdate: string; - autoUpdateZ: string; - autoInstall: string; - importPkgError: string; - installSuccess: string; - updateSuccess: string; - updateNone: string; - updateTo: string; - updateVersion: string; - localVersion: string; - updateTips: string; - recommendVersion: string; - recommendInstall: string; - includeUpdate: string; - installError: string; - getModuleErr: string; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/module/locale/index.js b/packages/cli/devkit/lib/module/locale/index.js deleted file mode 100644 index 00ca617a..00000000 --- a/packages/cli/devkit/lib/module/locale/index.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -/** - * 语言文件 - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - zh: { - autoUpdate: '{name} 设置了自动更新,正在执行更新操作...', - autoUpdateZ: '检查到您本地版本为 {localVersion} , 自动为您升级到兼容版本 {autoZVersion} 中...', - autoInstall: '本地尚未安装 {name} ,正在执行自动安装...', - // install-one.js - importPkgError: '您传入的包名有误,请输入正确的包名,如: @opentiny/cli-toolkit-xxx,@opentiny/cli-plugin-xxx', - installSuccess: '{name} 安装成功', - updateSuccess: '{name} 更新成功', - // utils.js - updateNone: '本地暂无可更新的模块', - updateTo: '从 {localVersion} 升级至 {lastVersion}', - updateVersion: '{lastVersion} 版本', - localVersion: ' , 本地版本是 {localVersion} ', - updateTips: '升级提示', - recommendVersion: '{name} 推荐的版本是 {version}', - recommendInstall: '请执行 {icon} {installTip} 来升级模块', - includeUpdate: '包含以下更新:', - installError: '{name} 安装报错,请确认该package是否存在!', - getModuleErr: '{modulePath} 文件运行失败,请检查,错误信息如下:', - }, - en: { - autoUpdate: '{name} has set an automatic update and is excuting an update operation...', - autoUpdateZ: 'Your local version is {localVersion}, automatically upgrading to compatible version {autoZVersion} for you...', - autoInstall: '{name} has not been installed, performing an automatic installation...', - // install-one.js - importPkgError: 'Package name is incorrect. Please re-enter the correct package name,eg: @opentiny/cli-toolkit-xxx, @opentiny/cli-plugin-xxx', - installSuccess: '{name} install completed', - updateSuccess: '{name} update completed', - // utils.js - updateNone: 'No update to the module', - updateTo: 'Upgrade from {localVersion} to {lastVersion}', - updateVersion: '{lastVersion} version', - localVersion: ' , The local version is {localVersion} ', - updateTips: 'Upgrade tips', - recommendVersion: '{name}: recommended version is {version}', - recommendInstall: 'Please execute {icon} {installTip} to upgrade the module', - includeUpdate: 'Include the following updates:', - installError: 'Install {name} package error, please confirm whether the package exists!', - getModuleErr: '{modulePath} failed to run, more details:', - }, -}; diff --git a/packages/cli/devkit/lib/module/online-exist.d.ts b/packages/cli/devkit/lib/module/online-exist.d.ts deleted file mode 100644 index 1c6b43dd..00000000 --- a/packages/cli/devkit/lib/module/online-exist.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * 线上模块是否存在 - */ -declare function onlineExist(name: string): Promise; -export default onlineExist; diff --git a/packages/cli/devkit/lib/module/online-exist.js b/packages/cli/devkit/lib/module/online-exist.js deleted file mode 100644 index e9dc3700..00000000 --- a/packages/cli/devkit/lib/module/online-exist.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../npm/index")); -/** - * 线上模块是否存在 - */ -async function onlineExist(name) { - const latest = await index_1.default.latest(name); - // 如果description 为 delete的话,则排查掉该模块,因为publish 之后,是不允许unpublish的 - return !!(latest && latest.description !== 'delete'); -} -exports.default = onlineExist; diff --git a/packages/cli/devkit/lib/module/online-list.d.ts b/packages/cli/devkit/lib/module/online-list.d.ts deleted file mode 100644 index 94a50a34..00000000 --- a/packages/cli/devkit/lib/module/online-list.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ModuleInfo } from '../npm/index'; -/** - * 获取列表, 缓存机制\ - * @returns {*|Request|Array} - */ -declare function onlineList(options: any): Promise; -export default onlineList; diff --git a/packages/cli/devkit/lib/module/online-list.js b/packages/cli/devkit/lib/module/online-list.js deleted file mode 100644 index f40bf620..00000000 --- a/packages/cli/devkit/lib/module/online-list.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ping_1 = __importDefault(require("ping")); -const index_1 = __importDefault(require("../cache/index")); -const index_2 = __importDefault(require("../log/index")); -const utils_1 = __importDefault(require("./utils")); -const index_3 = __importDefault(require("../npm/index")); -const index_4 = require("../cli-config/index"); -const log = index_2.default('core-module'); -/** - * 获取列表, 缓存机制\ - * @returns {*|Request|Array} - */ -async function onlineList(options) { - options = Object.assign({ cache: true }, options); - const cacheKey = utils_1.default.ONLINE_MODULE_CACHE_KEY_OUT; - let moduleList = (options.cache && index_1.default.get(cacheKey)) || []; - log.debug('get online list from cache %o', moduleList); - try { - if (!moduleList.length) { - // 先ping一下,看是否有网络 - const pingApi = 'npm.inhuawei.com'; - const pingRes = await ping_1.default.promise.probe(pingApi); - if (!pingRes || !pingRes.alive) { - log.error(`Network connection error for ${pingApi}`); - throw Error('Network connection error'); - } - const scope = index_4.getScope(); - const prefix = index_4.getBinName(); - const pkg = await index_3.default.latest(`@${scope}/aio-module-list`); - // 数据不存在则直接返回原始数据 - if (!pkg) { - return moduleList; - } - let modules = pkg.aio || {}; - // 非aio的套件与aio的套件合并到一起。 - if (prefix !== index_4.DEFAULT_BIN && pkg[prefix]) { - modules = Object.assign(Object.assign({}, pkg.aio), pkg[prefix]); - } - const list = Object.keys(modules); - list.forEach(item => { - moduleList.push({ - name: item, - chName: modules[item], - description: modules[item], - }); - }); - // 如果没有列表,就不缓存了 - if (!moduleList.length) { - index_1.default.set(cacheKey, moduleList, { - expires: 3600000, - }); - } - } - } - catch (e) { - log.error(e); - } - moduleList = options.type ? utils_1.default.moduleFilter(moduleList, options.type) : moduleList; - log.debug('所有线上模块: %o', moduleList); - return moduleList; -} -exports.default = onlineList; diff --git a/packages/cli/devkit/lib/module/update.d.ts b/packages/cli/devkit/lib/module/update.d.ts deleted file mode 100644 index 3c421c3a..00000000 --- a/packages/cli/devkit/lib/module/update.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 更新模块 - * @param name - */ -declare function update(name: string | undefined): Promise; -export default update; diff --git a/packages/cli/devkit/lib/module/update.js b/packages/cli/devkit/lib/module/update.js deleted file mode 100644 index 5b464b9d..00000000 --- a/packages/cli/devkit/lib/module/update.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../intl/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = __importDefault(require("./locale/index")); -const install_one_1 = __importDefault(require("./install-one")); -const local_list_1 = __importDefault(require("./local-list")); -const log = index_2.default('core-module'); -/** - * 更新模块 - * @param name - */ -async function update(name) { - const options = { - type: 'update', - }; - if (name) { - log.debug(`单独更新模块 ${name}`); - await install_one_1.default(name, options); - return; - } - const list = await local_list_1.default(); - log.debug('更新本地列表 %o', list); - for (let i = 0; i < list.length; i += 1) { - // todo 先全部重新安装 ,后面再做版本判断 - await install_one_1.default(list[i].name, options); - } - if (list.length === 0) { - const intl = new index_1.default(index_3.default); - log.success(intl.get('updateNone')); - } -} -exports.default = update; diff --git a/packages/cli/devkit/lib/module/utils.d.ts b/packages/cli/devkit/lib/module/utils.d.ts deleted file mode 100644 index 6e66a349..00000000 --- a/packages/cli/devkit/lib/module/utils.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * 版本更新日志打印 - * @param name - * @param opt - * @param opt.localPkg - * @param opt.lastPkg - * @param opt.level - */ -declare function updateLog(name: string, opt?: any): void; -/** - * 解决npminstall不存在package.json时依赖无法正常安装的问题 - * @param cwd 安装路径 - * @param name 模块名称 - * @param version 版本号 - */ -declare function addModuleToDependencies(cwd: string, name: string, version: string): void; -declare function removeModuleToDependencies(cwd: string, name: string): void; -/** - * 获取模块的前缀 - * @returns {string|string} - */ -declare function prefix(): string; -/** - * 获取套件模块完整名字 - * @param name 可传入的参数可能是:xxx,toolkit-xxx,@opentiny/cli-toolkit-xxx - * @returns {string} - */ -declare function toolkitFullName(name: string): string; -/** - * 获取插件模块完整名字 - * 传入的可能是 @opentiny/cli-plugin-xxx plugin-xxx - * @returns {string} - */ -declare function pluginFullName(name: string): string; -/** - * 根据传入的插件名称缩写,获取模块名称 - * @param name - * @returns {*} - */ -declare function fullName(name: string): string; -/** - * 获取套件的前缀 - */ -declare function toolkitPrefix(): string; -/** - * 获取插件的前缀 - */ -declare function pluginPrefix(): string; -declare const utils: { - moduleFilter(list: any, type: string): any; - toolkitPrefix: typeof toolkitPrefix; - pluginPrefix: typeof pluginPrefix; - toolkitFullName: typeof toolkitFullName; - pluginFullName: typeof pluginFullName; - fullName: typeof fullName; - prefix: typeof prefix; - UPDATE_CHECK_PRE: string; - ONLINE_MODULE_CACHE_KEY_IN: string; - ONLINE_MODULE_CACHE_KEY_OUT: string; - updateLog: typeof updateLog; - addModuleToDependencies: typeof addModuleToDependencies; - removeModuleToDependencies: typeof removeModuleToDependencies; - NO_TIP_PERIOD: number; -}; -export default utils; diff --git a/packages/cli/devkit/lib/module/utils.js b/packages/cli/devkit/lib/module/utils.js deleted file mode 100644 index 786882a1..00000000 --- a/packages/cli/devkit/lib/module/utils.js +++ /dev/null @@ -1,226 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../intl/index")); -const index_2 = __importDefault(require("../log/index")); -const chalk_1 = __importDefault(require("chalk")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const node_emoji_1 = __importDefault(require("node-emoji")); -const path = __importStar(require("path")); -const semver_1 = __importDefault(require("semver")); -const locale_1 = __importDefault(require("./locale")); -const index_3 = require("../cli-config/index"); -const log = index_2.default('core-module'); -/** - * 版本更新日志打印 - * @param name - * @param opt - * @param opt.localPkg - * @param opt.lastPkg - * @param opt.level - */ -function updateLog(name, opt) { - const ulog = log[opt.level || 'success']; - const intl = new index_1.default(locale_1.default); - let pre = ''; - let localVersion = ''; - const lastVersion = opt.lastPkg.version; - if (opt.localPkg && opt.localPkg.version !== lastVersion) { - localVersion = opt.localPkg.version; - pre = intl.get('updateTo', { localVersion, lastVersion }); - } - else { - pre = intl.get('updateVersion', { lastVersion }); - localVersion = lastVersion; - } - if (opt.lastPkg.changeLog) { - const changeLog = opt.lastPkg.changeLog.sort((a, b) => semver_1.default.lt(a.version, b.version) ? 1 : -1); - // 在警告模式下加重提示样式 - if (opt.level === 'warn') { - const tool = index_3.getBinName(); - const localVTip = localVersion ? intl.get('localVersion', { localVersion }) : ''; - const installTip = `${tool} install ${opt.lastPkg.name}`; - console.log('\n'); - ulog(`******************** ${node_emoji_1.default.get('warning')} ${node_emoji_1.default.get('warning')} ${intl.get('updateTips')} ${node_emoji_1.default.get('warning')} ${node_emoji_1.default.get('warning')} **********************`); - ulog(`${intl.get('recommendVersion', { - name, - version: chalk_1.default.green(lastVersion), - })}${localVTip}`); - ulog(intl.get('recommendInstall', { - icon: node_emoji_1.default.get('point_right'), - installTip: chalk_1.default.bgRed.bold(installTip), - })); - } - ulog(`${name} ${pre}, ${intl.get('includeUpdate')}`); - changeLog.forEach((item) => { - if (!item.log || !item.log.length) { - return; - } - if (lastVersion === localVersion) { - if (item.version !== lastVersion) { - return; - } - } - else if (!semver_1.default.lte(item.version, lastVersion) || !semver_1.default.gt(item.version, localVersion)) { - return; - } - // 显示未更新的这几个版本log - item.log.forEach((itemLog) => { - ulog(` --${itemLog}`); - }); - }); - // 在警告模式下加重提示样式 - if (opt.level === 'warn') { - ulog(`******************************${node_emoji_1.default.get('point_up_2')} ${node_emoji_1.default.get('point_up_2')} ******************************`); - console.log('\n'); - } - } -} -/** - * 解决npminstall不存在package.json时依赖无法正常安装的问题 - * @param cwd 安装路径 - * @param name 模块名称 - * @param version 版本号 - */ -function addModuleToDependencies(cwd, name, version) { - version = version || 'latest'; - let pkgFile = { dependencies: {} }; - const pkgPath = path.join(cwd, 'package.json'); - if (fs_extra_1.default.existsSync(pkgPath)) { - pkgFile = fs_extra_1.default.readJsonSync(pkgPath); - } - pkgFile.dependencies[name] = version; - fs_extra_1.default.outputJsonSync(pkgPath, pkgFile); -} -function removeModuleToDependencies(cwd, name) { - let pkgFile; - const pkgPath = path.join(cwd, 'package.json'); - if (!fs_extra_1.default.existsSync(pkgPath)) { - return; - } - pkgFile = fs_extra_1.default.readJsonSync(pkgPath); - delete pkgFile.dependencies[name]; - fs_extra_1.default.outputJsonSync(pkgPath, pkgFile); -} -/** - * 获取模块的前缀 - * @returns {string|string} - */ -function prefix() { - return process.env[index_3.PROCESS_ENV_BIN] || index_3.DEFAULT_BIN; -} -/** - * 获取套件模块完整名字 - * @param name 可传入的参数可能是:xxx,toolkit-xxx,@opentiny/cli-toolkit-xxx - * @returns {string} - */ -function toolkitFullName(name) { - let full = ''; - const prefix = utils.prefix(); - const tPrefix = utils.toolkitPrefix(); - const scope = index_3.getScope(); - name = name.replace(`@${scope}/`, ''); - // 当第三方cli使用时,传入的参数如 aio-toolkit-dev ,那么能正确获取到 - if (name.indexOf(tPrefix) === 0 || name.indexOf('toolkit') > 0) { - full = name; - } - else if (name.indexOf('toolkit') === 0) { - full = `${prefix}-${name}`; - } - else { - full = `${tPrefix}${name}`; - } - return `@${scope}/${full}`; -} -/** - * 获取插件模块完整名字 - * 传入的可能是 @opentiny/cli-plugin-xxx plugin-xxx - * @returns {string} - */ -function pluginFullName(name) { - let full = ''; - const prefix = utils.prefix(); - const pPrefix = utils.pluginPrefix(); - const scope = index_3.getScope(); - name = name.replace(`@${scope}/`, ''); - // aio-plugin-xxx 的情况,和 另外有个 cui-plugin-xxx 的情况(即name不是prefix开头的) - if (name.indexOf(pPrefix) === 0 || name.indexOf('plugin') > 0) { - full = name; - } - else if (name.indexOf('plugin') === 0) { - // plugin-xxx 的情况 - full = `${prefix}-${name}`; - } - else { - full = `${pPrefix}${name}`; - } - return `@${scope}/${full}`; -} -/** - * 根据传入的插件名称缩写,获取模块名称 - * @param name - * @returns {*} - */ -function fullName(name) { - if (name.indexOf('plugin-') > -1) { - return pluginFullName(name); - } - else if (name.indexOf('toolkit-') > -1) { - return toolkitFullName(name); - } - return name; -} -/** - * 获取套件的前缀 - */ -function toolkitPrefix() { - const pre = prefix(); - return `${pre}-toolkit-`; -} -/** - * 获取插件的前缀 - */ -function pluginPrefix() { - const pre = prefix(); - return `${pre}-plugin-`; -} -const utils = { - moduleFilter(list, type) { - return list.filter((item) => item.name.indexOf(`${type}-`) > -1); - }, - toolkitPrefix, - pluginPrefix, - toolkitFullName, - pluginFullName, - fullName, - prefix, - UPDATE_CHECK_PRE: 'moduleCheck_', - ONLINE_MODULE_CACHE_KEY_IN: 'onlineModuleListIn', - ONLINE_MODULE_CACHE_KEY_OUT: 'onlineModuleListOut', - updateLog, - addModuleToDependencies, - removeModuleToDependencies, - NO_TIP_PERIOD: 3600000, -}; -exports.default = utils; diff --git a/packages/cli/devkit/lib/npm/index.d.ts b/packages/cli/devkit/lib/npm/index.d.ts deleted file mode 100644 index 296e01f2..00000000 --- a/packages/cli/devkit/lib/npm/index.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * npm install时可传的选项 - * 透传:https://www.npmjs.com/package/npminstall - */ -export interface NpmOption { - registry?: string; - china?: boolean; - stdio?: string; - cwd?: string; - root?: string; - targetDir?: string; - binDir?: string; - debug?: boolean; - storeDir?: string; - ignoreScripts?: boolean; - forbiddenLicenses?: string; - proxy?: string; - production?: boolean; - env?: string; - detail?: string; - version?: string; - save?: boolean; - 'save-dev'?: boolean; - 'save-optional'?: boolean; - 'save-exact'?: boolean; - S?: boolean; - D?: boolean; - O?: boolean; - E?: boolean; - [key: string]: string | boolean | undefined; -} -/** - * 获取cnpmrc配置文件 - */ -export declare function getCnpmrc(): any; -/** - * 将对象写入进npmrc文件 - * @param config npmrc配置文件的内容 - */ -export declare function setCnpmrc(config: any): void; -/** - * 安装 npm 包 - * @param pkg {string|array} 需要安装的包或包列表, 需要带版本号直接在包名后面 @ 版本号即可 - // pkgs: [ - // { name: 'foo', version: '~1.0.0' }, - // ], - * @param options - */ -export declare function install(pkg: string | string[], options?: NpmOption): Promise; -/** - * 移除npm包 - */ -export declare function unInstall(pkg: string | string[], options?: NpmOption): Promise; -/** - * 安装package.json 中的依赖 - */ -export declare function installDependencies(options?: NpmOption): Promise; -/** - * 安装 npm 包 - * @param installer {string} 安装工具路径 - * @param paths {string|array} 需要安装的包或包列表,需要带版本号直接在包名后面 @ 版本号即可, 留空安装当前目录下的 package.json 依赖 - * @param options - */ -export declare function runInstall(installer: string, paths: any, options?: NpmOption): Promise; -/** - * 是否存在模块 - * @param name - */ -export declare function has(name: string, options?: NpmOption): Promise; -export interface ChangeLog { - version: string; -} -export interface ModuleInfo { - name: string; - chName: string; - description: string; -} -export interface PackageData { - version: string; - name: string; - author: string; - description: string; - changeLog: ChangeLog[]; - modules?: string[]; - aio?: string[]; - cui?: string[]; -} -/** - * 获取最新私有npm的包信息 - */ -export declare function latest(name: string, options?: NpmOption): Promise; -declare const _default: { - install: typeof install; - installDependencies: typeof installDependencies; - latest: typeof latest; - has: typeof has; - getCnpmrc: typeof getCnpmrc; - setCnpmrc: typeof setCnpmrc; - runInstall: typeof runInstall; -}; -export default _default; diff --git a/packages/cli/devkit/lib/npm/index.js b/packages/cli/devkit/lib/npm/index.js deleted file mode 100644 index 14b95ac6..00000000 --- a/packages/cli/devkit/lib/npm/index.js +++ /dev/null @@ -1,279 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.latest = exports.has = exports.runInstall = exports.installDependencies = exports.unInstall = exports.install = exports.setCnpmrc = exports.getCnpmrc = void 0; -const cross_spawn_1 = __importDefault(require("cross-spawn")); -const dargs_1 = __importDefault(require("dargs")); -const lodash_1 = __importDefault(require("lodash")); -const axios_1 = __importDefault(require("axios")); -const fs = __importStar(require("fs")); -const os = __importStar(require("os")); -const path = __importStar(require("path")); -const index_1 = __importDefault(require("../log/index")); -const index_2 = __importDefault(require("../cache/index")); -const index_3 = __importStar(require("../report/index")); -let cacheConfig; -const log = index_1.default('core-npm'); -// TIMEOUT 超时时间 -const TIMEOUT = 5000; -const defaultRegistrys = { - // npm.inhuawei.com 由SRE的陈博维护,打通绿区及黄区 - registry: 'http://npm.inhuawei.com/', - '@cloud:registry': 'http://npm.inhuawei.com/', -}; -/** - * 根据不同的环境获取npm地址 - * @param name : 模块名称 - * @returns {string} - */ -function getRegistry(name) { - const config = getCnpmrc(); - name = name || ''; - let scope; - let registry = config['registry'] || defaultRegistrys['registry']; - if (name[0] === '@') { - scope = name.slice(0, name.indexOf('/')); - } - if (scope) { - registry = config[`${scope}:registry`] || defaultRegistrys[`${scope}:registry`]; - } - // 需要以 "/" 结尾 - if (registry && !registry.endsWith('/')) { - registry = `${registry}/`; - } - return registry; -} -/** - * 获取cache配置 - */ -function getCacheDir() { - const config = getCnpmrc() || {}; - return config.cache; -} -/** - * 获取cnpmrc配置文件 - */ -function getCnpmrc() { - if (cacheConfig) - return cacheConfig; - let root = os.homedir(); - const config = {}; - const userConfig = path.join(root, '.cnpmrc'); - if (!fs.existsSync(userConfig)) - return {}; - const userConfigContent = fs.readFileSync(userConfig).toString(); - let configs = []; - configs = userConfigContent.split('\n'); - configs.reduce((pre, next) => { - if (typeof next === 'string') { - const map = next.split('='); - const key = map[0]; - let value = map[1]; - // hugo windows 如果用os.EOL写入的话,会多出\r,需要移除一下,主要是为了兼容windows下换行只有\n的情况 - if (value) { - value = value.replace('\r', ''); - } - if (value === 'true') - value = true; - if (value === 'false') - value = false; - pre[key] = value; - } - return pre; - }, config); - cacheConfig = config; - return config; -} -exports.getCnpmrc = getCnpmrc; -/** - * 将对象写入进npmrc文件 - * @param config npmrc配置文件的内容 - */ -function setCnpmrc(config) { - const base = getCnpmrc(); - const newConfig = Object.assign(Object.assign({}, base), config); - const root = os.homedir(); - const userConfig = path.join(root, '.cnpmrc'); - // 写入新内容到文件 - const data = []; - Object.keys(newConfig).forEach((item) => { - data.push(`${item}=${newConfig[item]}`); - }); - fs.writeFileSync(userConfig, data.join(os.EOL)); -} -exports.setCnpmrc = setCnpmrc; -/** - * 安装 npm 包 - * @param pkg {string|array} 需要安装的包或包列表, 需要带版本号直接在包名后面 @ 版本号即可 - // pkgs: [ - // { name: 'foo', version: '~1.0.0' }, - // ], - * @param options - */ -async function install(pkg, options) { - const installer = 'aio-install'; - await runInstall(installer, pkg, options); -} -exports.install = install; -/** - * 移除npm包 - */ -async function unInstall(pkg, options) { - const installer = 'aio-uninstall'; - await runInstall(installer, pkg, options); -} -exports.unInstall = unInstall; -/** - * 安装package.json 中的依赖 - */ -async function installDependencies(options) { - const installer = 'aio-install'; - await runInstall(installer, [], options); -} -exports.installDependencies = installDependencies; -/** - * 安装 npm 包 - * @param installer {string} 安装工具路径 - * @param paths {string|array} 需要安装的包或包列表,需要带版本号直接在包名后面 @ 版本号即可, 留空安装当前目录下的 package.json 依赖 - * @param options - */ -async function runInstall(installer, paths, options) { - const cwd = process.cwd(); - const cacheDir = getCacheDir(); - // npm默认值 - const option = lodash_1.default.defaults(options || {}, { - stdio: 'inherit', - registry: getRegistry(), - cwd, - china: true, - }); - // 支持cnpmrc设置缓存目录 - if (cacheDir) { - option.cacheDir = cacheDir; - } - // 如果指定强制不生成 package-lock.json 文件,则使用: --no-package-lock / 或者代码调用中传 package-lock: false - if (option['package-lock'] === undefined && !option['no-package-lock']) { - option['dependencies-tree'] = path.join(cwd, 'package-lock.json'); - option['save-dependencies-tree'] = true; - } - const cacheInstaller = index_2.default.get('installer'); - if (cacheInstaller && cacheInstaller === 'npm') { - installer = 'npm'; - paths = ['i'].concat(paths); - delete option.registry; - delete option.china; - const cnpmrc = path.join(os.homedir(), '.cnpmrc'); - // 指定npm的配置文件是cnpmrc - if (fs.existsSync(cnpmrc)) { - option.userconfig = cnpmrc; - } - } - log.debug('installer = %s', installer); - // 将pkg进行扁平化 - if (!Array.isArray(paths) && paths) { - paths = paths.split(' ') || []; - } - const args = paths.concat(dargs_1.default(option, { - aliases: { - S: '-save', - D: '-save-dev', - O: '-save-optional', - E: '-save-exact', - }, - })); - log.debug('args = %o', args); - log.debug('options = %o', option); - return new Promise((resolve, reject) => { - cross_spawn_1.default(installer, args, option) - .on('error', (e) => { - reject(e); - }) - .on('exit', (err) => { - if (err) { - reject(new Error(`安装 ${paths} 失败!为了保证项目稳定性,请删除本地失败的node_modules后再重试。可执行命令: rm -rf node_modules`)); - } - else { - resolve(true); - } - }); - }); -} -exports.runInstall = runInstall; -/** - * 是否存在模块 - * @param name - */ -async function has(name, options) { - const registry = getRegistry(name); - options = Object.assign({ registry }, options); - const url = `${options.registry}${encodeURIComponent(name)}/latest`; - log.debug('check module has =%s', url); - try { - const res = await axios_1.default.head(url, { timeout: TIMEOUT }); - return !/4\d\d/.test(res.status); - } - catch (e) { - const errMsg = `get ${url} has error: ${e.toString()}`; - log.error(errMsg); - index_3.default.error(index_3.ErrorType.MODULE_NOT_FOUND, errMsg); - return false; - } -} -exports.has = has; -/** - * 获取最新私有npm的包信息 - */ -async function latest(name, options) { - const registry = getRegistry(name); - options = Object.assign({ registry, version: 'latest' }, options); - const url = `${options.registry}${encodeURIComponent(name)}/${options.version}`; - let data = null; - try { - log.debug(`get ${name} url = %s`, url); - // 5秒到期 - const res = await axios_1.default.get(url, { timeout: TIMEOUT }); - data = res.data; - if (!data) { - data = null; - } - } - catch (e) { - const errMsg = `get ${url} has error: ${e.toString()}`; - log.error(errMsg); - index_3.default.error(index_3.ErrorType.MODULE_NOT_FOUND, errMsg); - // 返回数据出错 - data = null; - } - return data; -} -exports.latest = latest; -exports.default = { - install, - installDependencies, - latest, - has, - getCnpmrc, - setCnpmrc, - runInstall, -}; diff --git a/packages/cli/devkit/lib/npm/index.test.d.ts b/packages/cli/devkit/lib/npm/index.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/npm/index.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/npm/index.test.js b/packages/cli/devkit/lib/npm/index.test.js deleted file mode 100644 index 6ace53de..00000000 --- a/packages/cli/devkit/lib/npm/index.test.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const npm = __importStar(require("./index")); -const ava_1 = __importDefault(require("ava")); -ava_1.default('# 测试安装状态', async (t) => { - await npm.install('jquery'); - t.pass(); -}); -ava_1.default('# has 判断模块是否存在', async (t) => { - const has = await npm.has('@cloud/expense'); - t.true(has); -}); -ava_1.default('# lastes 获取模块的信息', async (t) => { - const data = await npm.latest('@cloud/expense'); - t.true(typeof data === 'object'); - t.is('@cloud/expense', data.name); -}); diff --git a/packages/cli/devkit/lib/report/index.d.ts b/packages/cli/devkit/lib/report/index.d.ts deleted file mode 100644 index f727a6e9..00000000 --- a/packages/cli/devkit/lib/report/index.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * 核心入口命令发送,用于统计谁做了什么操作 - */ -export declare function baseData(): { - userEmail: any; - userName: any; - cliName: any; - cliVersion: any; - system: any; - npm: any; - node: any; - git: null; - branch: null; - command: string; - cwd: string; -}; -/** -* 上报日志 -* @param {object} data -*/ -export declare function send(type: string, data: any): void; -export declare function sendReportEntry(): void; -/** - * 根据模块名称发送日志 - * 非入口命令发送,主要是任务流中tasks 里面的command 任务 - */ -export declare function sendReportForModule(name: string): void; -export declare enum ErrorType { - MODULE_NOT_FOUND = "module-not-found", - CLI_CORE = "cli-core", - CONFIG_ERROR = "config-error", - TASK_ERROR = "task-error" -} -/** - * 发生错误时,上报日志 - */ -export declare function sendReportForError(errType: ErrorType, errDetail: any): void; -declare const _default: { - ErrorType: typeof ErrorType; - /** - * 用户执行命令时发送记录 - */ - entry: () => void; - /** - * 由aio工具触发的命令时记录 - * @param name aio模块名称 - */ - module: (name: string) => void; - /** - * 运行异常时发送日志 - * @param errType 错误类型 - * @param errDetail 错误详情 - */ - error: (errType: ErrorType, errDetail: any) => void; -}; -export default _default; diff --git a/packages/cli/devkit/lib/report/index.js b/packages/cli/devkit/lib/report/index.js deleted file mode 100644 index a6662eb4..00000000 --- a/packages/cli/devkit/lib/report/index.js +++ /dev/null @@ -1,187 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.sendReportForError = exports.ErrorType = exports.sendReportForModule = exports.sendReportEntry = exports.send = exports.baseData = void 0; -/** - * @desc 信息上报 - */ -const axios_1 = __importDefault(require("axios")); -const index_1 = __importDefault(require("../log/index")); -const fs = __importStar(require("fs")); -const path = __importStar(require("path")); -const utils_1 = require("./utils"); -const index_2 = __importDefault(require("../git/index")); -const index_3 = __importDefault(require("../cli-config/index")); -const cwd = process.cwd(); -const log = index_1.default('core-report'); -const TIMEOUT = 300; -// 在客户端中不好加密,先硬编码 -const APITOKEN = '14ZOEzkrW5*s837!tA7AytKJDC5SSI9JdM!0Mb59@gOAK2'; -let host = 'https://tinycommon.cloudbu.huawei.com'; -if (process.env.NODE_ENV === 'local') { - host = 'http://tinyops.dev.huawei.com:7001'; -} -/** - * 核心入口命令发送,用于统计谁做了什么操作 - */ -function baseData() { - let branch = null; - let repository = null; - try { - if (fs.existsSync(path.join(cwd, '.git'))) { - branch = index_2.default.branch(cwd); - repository = index_2.default.repository(cwd); - } - } - catch (e) { - console.error(e); - } - const info = utils_1.getProjectEnv(); - const command = utils_1.getCommand(); - return { - userEmail: info.user.email, - userName: info.user.name, - cliName: info.cliName, - cliVersion: info.cliVersion, - system: info.system, - npm: info.npmVersion, - node: info.nodeVersion, - git: repository, - branch: branch, - command, - cwd, - }; -} -exports.baseData = baseData; -/** -* 上报日志 -* @param {object} data -*/ -function send(type, data) { - const url = `${host}/tinystage/api/${type}`; - log.debug('send log for api = %s', url); - process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; - process.env['NODE_NO_WARNINGS'] = '1'; - axios_1.default({ - method: 'GET', - url, - data, - headers: { - 'access-token': APITOKEN - }, - timeout: 2000, - }).then(function () { - log.debug('send log success'); - }).catch(function (error) { - log.debug('send log error'); - log.debug(error); - }); -} -exports.send = send; -function sendReportEntry() { - const data = baseData(); - log.debug('sendReportEntry最终发送的数据 = %o', data); - // 能获取到用户信息的话,才注入进去 - if (data.userEmail) { - send('report-log', data); - } -} -exports.sendReportEntry = sendReportEntry; -/** - * 根据模块名称发送日志 - * 非入口命令发送,主要是任务流中tasks 里面的command 任务 - */ -function sendReportForModule(name) { - const moduleVersion = utils_1.getModuleVersion(name); - const moduleEntry = index_3.default.getModuleEntry(); - const data = Object.assign(Object.assign({}, baseData()), { moduleName: name, moduleVersion }); - // 判断如果名称一致的话,则不显示入口 - // moduleEntry 主要是标明当前命令是执行哪个命令运行起来的 - if (moduleEntry) { - data.moduleEntry = moduleEntry; - } - log.debug('sendReportForModule最终发送的数据 = %o', data); - if (data.userEmail) { - send('report-log', data); - } -} -exports.sendReportForModule = sendReportForModule; -var ErrorType; -(function (ErrorType) { - ErrorType["MODULE_NOT_FOUND"] = "module-not-found"; - ErrorType["CLI_CORE"] = "cli-core"; - ErrorType["CONFIG_ERROR"] = "config-error"; - ErrorType["TASK_ERROR"] = "task-error"; -})(ErrorType = exports.ErrorType || (exports.ErrorType = {})); -/** - * 发生错误时,上报日志 - */ -function sendReportForError(errType, errDetail) { - const data = Object.assign(Object.assign({}, baseData()), { errType, - errDetail }); - log.debug('sendReportForError最终发送的数据 = %o', data); - if (data.userEmail) { - send('error-log', data); - } -} -exports.sendReportForError = sendReportForError; -exports.default = { - ErrorType, - /** - * 用户执行命令时发送记录 - */ - entry: function () { - // 构建环境就不发送了 - if (process.env.res_domain) - return; - setTimeout(function () { - sendReportEntry(); - }, TIMEOUT); - }, - /** - * 由aio工具触发的命令时记录 - * @param name aio模块名称 - */ - module: function (name) { - // 构建环境就不发送了 - if (process.env.res_domain) - return; - setTimeout(function () { - sendReportForModule(name); - }, TIMEOUT); - }, - /** - * 运行异常时发送日志 - * @param errType 错误类型 - * @param errDetail 错误详情 - */ - error: function (errType, errDetail) { - // 构建环境就不发送了 - if (process.env.res_domain) - return; - setTimeout(function () { - sendReportForError(errType, errDetail); - }, TIMEOUT); - }, -}; diff --git a/packages/cli/devkit/lib/report/utils.d.ts b/packages/cli/devkit/lib/report/utils.d.ts deleted file mode 100644 index 945e4c91..00000000 --- a/packages/cli/devkit/lib/report/utils.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 环境变量获取 - */ -export declare const cacheEnvGetter: { - nodeVersion(): string; - user(): import("../user/interface").UserInfo; - cliName(): string; - npmVersion(): string | null; - system(): string; -}; -/** - * 获取项目的环境信息 - * @param force 为true时 则获取实时信息,否则读取缓存 - * 对 npm, node 版本等重新获取,一般在报错的时候才传入 true - * @returns {*} - */ -export declare function getProjectEnv(force?: boolean): any; -/** - * 获取项目相关环境 - * @param cwd 项目路径 - * @returns {object} 返回项目相关的信息 - branch 当前项目分支 - pkg 当前package.json 内容 - configFile 当前 aio.config.js 内容 - repository 项目仓库url - */ -export declare function getProjectInfo(cwd: string): any; -/** - * 获取当前执行的命令,移除用户路径 - */ -export declare function getCommand(): string; -/** - * 获取模块的类型和版本 - * @param mod 模块名称 - */ -export declare function getModuleVersion(mod: string): any; diff --git a/packages/cli/devkit/lib/report/utils.js b/packages/cli/devkit/lib/report/utils.js deleted file mode 100644 index f15aeb3f..00000000 --- a/packages/cli/devkit/lib/report/utils.js +++ /dev/null @@ -1,146 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getModuleVersion = exports.getCommand = exports.getProjectInfo = exports.getProjectEnv = exports.cacheEnvGetter = void 0; -const os = __importStar(require("os")); -const cp = __importStar(require("child_process")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = __importDefault(require("../user/index")); -const path = __importStar(require("path")); -const index_3 = __importDefault(require("../git/index")); -const index_4 = require("../cli-config/index"); -const index_5 = __importDefault(require("../fs/index")); -const index_6 = __importDefault(require("../cache/index")); -const yargs_1 = __importDefault(require("yargs")); -const argv = yargs_1.default.help(false).argv; -const execSync = cp.execSync; -/** - * 环境变量获取 - */ -exports.cacheEnvGetter = { - nodeVersion() { - return execSync('node -v') - .toString() - .replace(/[\nv]|\r/g, ''); - }, - user() { - return index_2.default.get(); - }, - cliName() { - return index_4.getBinName(); - }, - npmVersion() { - try { - return execSync('npm -v').toString().replace('\n', ''); - } - catch (e) { - return null; - } - }, - system() { - return `${os.platform()} ${os.release()}`; - }, -}; -/** - * 获取项目的环境信息 - * @param force 为true时 则获取实时信息,否则读取缓存 - * 对 npm, node 版本等重新获取,一般在报错的时候才传入 true - * @returns {*} - */ -function getProjectEnv(force) { - let cacheEnv = index_6.default.get('envCache'); - if (!cacheEnv || force) { - cacheEnv = {}; - const cacheEnvKeys = Object.keys(exports.cacheEnvGetter); - cacheEnvKeys.forEach((item) => { - cacheEnv[item] = exports.cacheEnvGetter[item](); - }); - // 缓存12小时 - index_6.default.set('envCache', cacheEnv, { expires: 60 * 60 * 24 }); - } - // 版本信息直接获取就行,不用缓存,因为可能更新会比较快 - cacheEnv['cliVersion'] = process.env[index_4.PROCESS_ENV_CLI_VERSION]; - return cacheEnv; -} -exports.getProjectEnv = getProjectEnv; -/** - * 获取项目相关环境 - * @param cwd 项目路径 - * @returns {object} 返回项目相关的信息 - branch 当前项目分支 - pkg 当前package.json 内容 - configFile 当前 aio.config.js 内容 - repository 项目仓库url - */ -function getProjectInfo(cwd) { - const branch = index_3.default.branch(cwd); - const configPath = path.join(cwd, index_4.PROCESS_ENV_CONFIG_FILE); - const pkg = index_5.default.readPackage(cwd); - const repository = index_3.default.repository(cwd); - let configFile; - // 判断aio.config.js是否存在 - if (index_5.default.existsSync(configPath)) { - delete require.cache[configPath]; - try { - configFile = require(configPath); - } - catch (e) { - configFile = null; - } - } - return { - branch, - pkg, - configFile, - repository, - }; -} -exports.getProjectInfo = getProjectInfo; -/** - * 获取当前执行的命令,移除用户路径 - */ -function getCommand() { - const argvClone = Object.assign({}, argv); - const cmd = [index_4.getBinName()].concat(argv._); - delete argvClone._; - delete argvClone.$0; - Object.keys(argvClone).forEach((item) => { - cmd.push(`--${item}`); - if (argvClone[item] !== true) { - cmd.push(argvClone[item]); - } - }); - return cmd.join(' '); -} -exports.getCommand = getCommand; -/** - * 获取模块的类型和版本 - * @param mod 模块名称 - */ -function getModuleVersion(mod) { - const modPkgPath = path.join(index_1.default.getModulesPath(), mod, 'package.json'); - const pkg = index_5.default.existsSync(modPkgPath) ? index_5.default.readJsonSync(modPkgPath, { throws: false }) : { version: null }; - return pkg.version; -} -exports.getModuleVersion = getModuleVersion; diff --git a/packages/cli/devkit/lib/task/has.d.ts b/packages/cli/devkit/lib/task/has.d.ts deleted file mode 100644 index aaa62c18..00000000 --- a/packages/cli/devkit/lib/task/has.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 一个任务列表里面是否存在有指定时间的任务 - * @param tasks , 任务列表,与 aio.config.js 里面任务流数据格式保持一致 - * @param when {string} 可以不传, 或传 before , after - * @returns {boolean} - */ -declare function has(tasks: any, when?: string): boolean; -export default has; diff --git a/packages/cli/devkit/lib/task/has.js b/packages/cli/devkit/lib/task/has.js deleted file mode 100644 index fbebe70c..00000000 --- a/packages/cli/devkit/lib/task/has.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = __importDefault(require("./utils")); -/** - * 一个任务列表里面是否存在有指定时间的任务 - * @param tasks , 任务列表,与 aio.config.js 里面任务流数据格式保持一致 - * @param when {string} 可以不传, 或传 before , after - * @returns {boolean} - */ -function has(tasks, when) { - if (!tasks) { - return false; - } - if (!when) { - if (tasks.length) { - return true; - } - return false; - } - return !!utils_1.default.classify(tasks)[when].length; -} -exports.default = has; diff --git a/packages/cli/devkit/lib/task/has.test.d.ts b/packages/cli/devkit/lib/task/has.test.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/packages/cli/devkit/lib/task/has.test.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/cli/devkit/lib/task/has.test.js b/packages/cli/devkit/lib/task/has.test.js deleted file mode 100644 index 0890187a..00000000 --- a/packages/cli/devkit/lib/task/has.test.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ava_1 = __importDefault(require("ava")); -const has_1 = __importDefault(require("./has")); -const chai_1 = require("chai"); -ava_1.default('# has 判断是否有任务 有 __toolkitCommand__ 的情况', async (t) => { - const tasks1 = [ - { - command: 'echo 1', - }, - { - command: '__toolkitCommand__', - }, - { - command: 'echo 2', - }, - ]; - const tasks2 = [ - { - command: '__toolkitCommand__', - }, - { - command: 'echo 2', - }, - ]; - const res1 = has_1.default(tasks1, 'before'); - const res2 = has_1.default(tasks1, 'after'); - const res3 = has_1.default(tasks2, 'before'); - const res4 = has_1.default(tasks2, 'after'); - chai_1.expect(res1).to.be.equal(true); - chai_1.expect(res2).to.be.equal(true); - chai_1.expect(res3).to.be.equal(false); - chai_1.expect(res4).to.be.equal(true); - t.pass(); -}); -ava_1.default('# 无 __toolkitCommand__ 的情况', async (t) => { - const tasks1 = [ - { - command: 'echo 1', - }, - ]; - const res1 = has_1.default(tasks1, 'before'); - const res2 = has_1.default(tasks1, 'after'); - chai_1.expect(res1).to.be.equal(true); - chai_1.expect(res2).to.be.equal(false); - t.pass(); -}); diff --git a/packages/cli/devkit/lib/task/index.d.ts b/packages/cli/devkit/lib/task/index.d.ts deleted file mode 100644 index 3b05daa9..00000000 --- a/packages/cli/devkit/lib/task/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @desc: 汇集系统操作基本方法 - */ -import has from './has'; -import run from './run'; -import runFunction from './run-function'; -declare const _default: { - run: typeof run; - runFunction: typeof runFunction; - has: typeof has; -}; -export default _default; diff --git a/packages/cli/devkit/lib/task/index.js b/packages/cli/devkit/lib/task/index.js deleted file mode 100644 index a7e86ac3..00000000 --- a/packages/cli/devkit/lib/task/index.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -/** - * @desc: 汇集系统操作基本方法 - */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const has_1 = __importDefault(require("./has")); -const run_1 = __importDefault(require("./run")); -const run_function_1 = __importDefault(require("./run-function")); -exports.default = { - run: run_1.default, - runFunction: run_function_1.default, - has: has_1.default, -}; diff --git a/packages/cli/devkit/lib/task/locale/index.d.ts b/packages/cli/devkit/lib/task/locale/index.d.ts deleted file mode 100644 index c018327d..00000000 --- a/packages/cli/devkit/lib/task/locale/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 语言文件 - */ -declare const _default: { - zh: { - commandError: string; - runCommand: string; - preTask: string; - nextTask: string; - runSuccess: string; - }; - en: { - commandError: string; - runCommand: string; - preTask: string; - nextTask: string; - runSuccess: string; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/task/locale/index.js b/packages/cli/devkit/lib/task/locale/index.js deleted file mode 100644 index ea06a08f..00000000 --- a/packages/cli/devkit/lib/task/locale/index.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -/** - * 语言文件 - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - zh: { - commandError: '{command} 命令执行行失败', - runCommand: '开始执行{command}{whenTips}任务', - preTask: '前置', - nextTask: '后置', - runSuccess: '{command}{whenTips}任务执行成功', - }, - en: { - commandError: 'Failed to excute {command}', - runCommand: '{command} {whenTips} stared', - preTask: 'Pre-task', - nextTask: 'Post-task', - runSuccess: '{command} {whenTips} completed', - }, -}; diff --git a/packages/cli/devkit/lib/task/run-function.d.ts b/packages/cli/devkit/lib/task/run-function.d.ts deleted file mode 100644 index e082a1ff..00000000 --- a/packages/cli/devkit/lib/task/run-function.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * 执行某个函数 - * 如果是 generator 类型,则使用 yield执行, 并在其后执行 next(0\) - * 否则普通调用, 并传入 next 函数 - * @param options {object} - * @param options.method {function} 函数体 - * @param options.args {array} 参数 - * @param options.next {function} 下一步执行方法 - * @return {mix} 函数体内的返回值 - */ -declare function runFunction(options: any): Promise; -export default runFunction; diff --git a/packages/cli/devkit/lib/task/run-function.js b/packages/cli/devkit/lib/task/run-function.js deleted file mode 100644 index 5e9297ce..00000000 --- a/packages/cli/devkit/lib/task/run-function.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = require("./utils"); -const index_1 = __importStar(require("../report/index")); -/** - * 执行某个函数 - * 如果是 generator 类型,则使用 yield执行, 并在其后执行 next(0\) - * 否则普通调用, 并传入 next 函数 - * @param options {object} - * @param options.method {function} 函数体 - * @param options.args {array} 参数 - * @param options.next {function} 下一步执行方法 - * @return {mix} 函数体内的返回值 - */ -async function runFunction(options) { - const noop = () => { }; - const method = options.method; - const args = options.args || []; - const next = options.next || noop; - if (utils_1.isGeneratorFunction(method) || utils_1.isGenerator(method)) { - let res; - try { - res = await method.apply(null, args); - } - catch (e) { - index_1.default.error(index_1.ErrorType.CLI_CORE, e.stack || e); - throw e; - } - next(); - return res; - } - let res; - try { - res = method.apply(null, args.concat(next)); - } - catch (e) { - index_1.default.error(index_1.ErrorType.CLI_CORE, e.stack || e); - throw e; - } - // return 为 promise 对象的情况 - if (res && typeof res.then === 'function') { - let res2; - try { - res2 = await res; - } - catch (e) { - index_1.default.error(index_1.ErrorType.CLI_CORE, e.stack || e); - throw e; - } - next(); - return res2; - } - else { - next(); - } - return res; -} -exports.default = runFunction; diff --git a/packages/cli/devkit/lib/task/run.d.ts b/packages/cli/devkit/lib/task/run.d.ts deleted file mode 100644 index 07d31ba5..00000000 --- a/packages/cli/devkit/lib/task/run.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 运行任务 - * @param options - */ -declare function run(options: any): Promise; -export default run; diff --git a/packages/cli/devkit/lib/task/run.js b/packages/cli/devkit/lib/task/run.js deleted file mode 100644 index 695d7524..00000000 --- a/packages/cli/devkit/lib/task/run.js +++ /dev/null @@ -1,183 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../intl/index")); -const index_2 = __importDefault(require("../log/index")); -const index_3 = __importDefault(require("./locale/index")); -const run_function_1 = __importDefault(require("./run-function")); -const index_4 = __importDefault(require("../fs/index")); -const index_5 = __importStar(require("../report/index")); -const utils_1 = __importDefault(require("./utils")); -const cross_spawn_1 = __importDefault(require("cross-spawn")); -const index_6 = require("../cli-config/index"); -const npmRun = require('npm-run'); -const log = index_2.default('core-task'); -const spawn = npmRun.spawn; -/** - * 设置 package.json中的config字段到 env 中,兼容npm run 的场景 - * - */ -function setNpmConfigToEnv() { - const pkg = index_4.default.readPackage(); - if (pkg && pkg.config && typeof pkg.config === 'object') { - Object.keys(pkg.config).forEach((item) => { - process.env[`npm_package_config_${item}`] = pkg.config[item]; - }); - } -} -/** - * 运行单个任务 - * @param task - * @param args - * @return {boolean} 是否继续往下执行, 为 false 的话,不继续执行,后面进程直接退出 - */ -async function oneTask(task, args) { - const intl = new index_1.default(index_3.default); - // task是一个function时,执行function - if (task.func) { - const res = await run_function_1.default({ - method: task.func, - args, - }); - return res; - } - else if (task.command) { - // task 是个命令的时候,执行命令 - return new Promise((resolve, reject) => { - const command = task.command.split(' '); - const env = {}; - // 缓存旧环境变量 - const oldEnv = {}; - const resetEnv = () => { - // 这里一定要用 oldEnv 的key ,否则任务体里面添加新的环境变量会被变成 undefined 的 - Object.keys(oldEnv).forEach((item) => { - process.env[item] = oldEnv[item]; - }); - }; - for (let i = 0; i < command.length; i += 1) { - if (/^\w+=.+$/.test(command[i])) { - command[i] = command[i].split('='); - env[command[i][0]] = command[i][1]; - } - else { - if (i !== 0) { - command.splice(0, i); - } - break; - } - } - Object.keys(env).forEach((item) => { - oldEnv[item] = process.env[item]; - process.env[item] = env[item]; - }); - log.debug(`${task.command} 开始执行`); - // 因为 其他基于aio衍生的工具也具备执行aio插件的能力,故为了不混淆aio的使用,这里在运行时将aio替换为工具本身来执行 - let cliBin = command.splice(0, 1).pop(); - if (cliBin === index_6.DEFAULT_BIN && process.env[index_6.PROCESS_ENV_BIN]) { - cliBin = process.env[index_6.PROCESS_ENV_BIN]; - } - setNpmConfigToEnv(); - const options = { - cwd: task.cwd || process.cwd(), - env: process.env, - stdio: 'inherit', - }; - // 透传 args的参数 - if (!task.args && args[0] && args[0].clientOptions) { - const cArgs = args[0].clientOptions; - const clientOptions = Object.keys(cArgs); - clientOptions.forEach((item) => { - command.push(`--${item}`); - if (cArgs[item] !== true) { - command.push(cArgs[item]); - } - }); - } - log.debug('完整执行的command命令参数是 ->', command); - log.debug('完整执行的options透传参数是->', options); - // 兼容多平台 - const parsed = cross_spawn_1.default._parse(cliBin, command, options); - const child = spawn(parsed.command, parsed.args, parsed.options); - // const child = spawn(cliBin, command, options); - // 任务流执行失败 - child.on('error', (err) => { - resetEnv(); - reject(err); - }); - child.on('close', (status) => { - // 插件自己要退出,则不抛出异常 - if (status === 10) { - resetEnv(); - resolve(false); - } - else if (status !== 0) { - const msg = intl.get('commandError', { command: task.command }); - log.error(msg); - index_5.default.error(index_5.ErrorType.TASK_ERROR, msg); - resetEnv(); - // 执行失败后,退出终端,不再继续执行 - process.exit(status); - // 这里抛出的错误和全局扑获的错误重复了,先不执行reject吧 - // reject(new Error(message)); - } - else { - resetEnv(); - resolve(true); - } - }); - }); - } - return true; -} -/** - * 运行任务 - * @param options - */ -async function run(options) { - // 筛选出对应的任务 - const intl = new index_1.default(index_3.default); - const tasks = options.tasks || []; // 任务流 - const when = options.when || 'before'; // 前置任务还是后置,默认是前置任务 - const args = options.args || []; // 任务流传进来的参数 - const command = options.command || ''; // 运行的命令 - const newTasks = utils_1.default.classify(tasks)[when]; - const whenTips = when === 'after' ? intl.get('nextTask') : intl.get('preTask'); - log.info(intl.get('runCommand', { command, whenTips })); - // log.info(`正在执行行${command}${(when === 'after' ? '后置' : '前置')}任务`); - for (let i = 0; i < newTasks.length; i += 1) { - if (newTasks[i].async) { - oneTask(newTasks[i], args); - } - else { - const result = await oneTask(newTasks[i], args); - if (result === false) { - // 用户强制要求退出,则正常退出一下 - process.exit(0); - } - } - } - log.success(intl.get('runSuccess', { command, whenTips })); - // log.success(`${command}${(when === 'after' ? '后置' : '前置')}任务执行成功`); -} -exports.default = run; diff --git a/packages/cli/devkit/lib/task/utils.d.ts b/packages/cli/devkit/lib/task/utils.d.ts deleted file mode 100644 index ea0075d3..00000000 --- a/packages/cli/devkit/lib/task/utils.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * 判断当前对象是否为 generator 对象 - * @param obj - * @returns {boolean} - */ -export declare function isGenerator(obj: any): boolean; -/** - * 判断当前对象是否为 generator 函数 - * @param obj - * @returns {boolean} - */ -export declare function isGeneratorFunction(obj: any): boolean; -export declare function classify(tasks: any[]): any; -declare const _default: { - isGenerator: typeof isGenerator; - isGeneratorFunction: typeof isGeneratorFunction; - classify: typeof classify; -}; -export default _default; diff --git a/packages/cli/devkit/lib/task/utils.js b/packages/cli/devkit/lib/task/utils.js deleted file mode 100644 index bd4ca84e..00000000 --- a/packages/cli/devkit/lib/task/utils.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.classify = exports.isGeneratorFunction = exports.isGenerator = void 0; -const TOOLKIT_COMMAND_HOOK = '$task'; -/** - * 判断当前对象是否为 generator 对象 - * @param obj - * @returns {boolean} - */ -function isGenerator(obj) { - return typeof obj.next === 'function' && typeof obj.throw === 'function'; -} -exports.isGenerator = isGenerator; -/** - * 判断当前对象是否为 generator 函数 - * @param obj - * @returns {boolean} - */ -function isGeneratorFunction(obj) { - const constructor = obj.constructor; - if (!constructor) { - return false; - } - if (constructor.name === 'GeneratorFunction' || constructor.displayName === 'GeneratorFunction') { - return true; - } - return isGenerator(constructor.prototype); -} -exports.isGeneratorFunction = isGeneratorFunction; -function classify(tasks) { - let match = false; - const before = []; - const after = []; - tasks.forEach((item) => { - if (item.command && item.command === TOOLKIT_COMMAND_HOOK) { - match = true; - } - else if (match) { - after.push(item); - } - else { - before.push(item); - } - }); - const data = { - before, - after, - }; - return data; -} -exports.classify = classify; -exports.default = { - isGenerator, - isGeneratorFunction, - classify, -}; diff --git a/packages/cli/devkit/lib/upgrade/index.d.ts b/packages/cli/devkit/lib/upgrade/index.d.ts deleted file mode 100644 index fe1e07a3..00000000 --- a/packages/cli/devkit/lib/upgrade/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 升级提示,若发布新版本,会定时提醒是否需要更新 - * @param data object { "name" : 包名, "version" : 当前版本} - */ -declare function updateTip(data: any): Promise; -export default updateTip; diff --git a/packages/cli/devkit/lib/upgrade/index.js b/packages/cli/devkit/lib/upgrade/index.js deleted file mode 100644 index bf3da76a..00000000 --- a/packages/cli/devkit/lib/upgrade/index.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const index_1 = __importDefault(require("../cache/index")); -const index_2 = __importDefault(require("../intl/index")); -const index_3 = __importDefault(require("../log/index")); -const index_4 = __importDefault(require("../npm/index")); -const index_5 = __importDefault(require("../cli-config/index")); -const chalk_1 = __importDefault(require("chalk")); -const node_emoji_1 = __importDefault(require("node-emoji")); -const semver_1 = __importDefault(require("semver")); -const index_6 = __importDefault(require("./locale/index")); -const log = index_3.default('core-upgrade'); -const TIP_CACHE_KEY = '__versionTip'; -/** - * 升级提示,若发布新版本,会定时提醒是否需要更新 - * @param data object { "name" : 包名, "version" : 当前版本} - */ -async function updateTip(data) { - let needFocusUpdate = false; - if (index_1.default.get(TIP_CACHE_KEY)) { - return needFocusUpdate; - } - const latest = await index_4.default.latest(data.name); - // 缓存设置为24小时,过24小时才重新提示升级 cli - index_1.default.set(TIP_CACHE_KEY, true, { - expires: 86400000, - }); - // latest 没有值,可能没有网络 - if (!latest) { - return needFocusUpdate; - } - log.debug('%s current-version: %s, latest-version: %s', data.name, data.version, latest.version); - // 当前版本是最新 - if (!semver_1.default.lt(data.version, latest.version)) { - return needFocusUpdate; - } - // 当更新了Y位的话,启动自动升级机制 - needFocusUpdate = semver_1.default.diff(data.version, latest.version) === 'minor'; - log.debug('needFocusUpdate =>', needFocusUpdate); - // 当当前版本的y位有变化,强制更新cli - const installer = index_5.default.getBinName() || 'npm'; - const intl = new index_2.default(index_6.default); - console.log('\n'); - log.warn(`******************** ${node_emoji_1.default.get('warning')} ${node_emoji_1.default.get('warning')} ${intl.get('updateTips')} ${node_emoji_1.default.get('warning')} ${node_emoji_1.default.get('warning')} **********************`); - log.warn(intl.get('recommendedVersion', { - latest: chalk_1.default.green.bold(latest.version), - localVersion: data.version, - })); - // 区分一下自动升级与手动升级的文案 - if (needFocusUpdate) { - log.warn(intl.get('updatingCommand', { - icon: node_emoji_1.default.get('point_right'), - command: chalk_1.default.bgRed.bold(` ${installer} i ${data.name} @opentiny/cli-install -g `), - })); - } - else { - log.warn(intl.get('updateCommand', { - icon: node_emoji_1.default.get('point_right'), - command: chalk_1.default.bgRed.bold(` ${installer} i ${data.name} @opentiny/cli-install -g`), - })); - } - // linux & mac 下才提示 - if (process.platform.indexOf('win') !== 0) { - log.warn(`${intl.get('ifUpdateError')} ${chalk_1.default.red.bold(`sudo ${installer} install -g ${data.name} @opentiny/cli-install`)}`); - } - log.warn(`******************************${node_emoji_1.default.get('point_up_2')} ${node_emoji_1.default.get('point_up_2')} ******************************`); - console.log('\n'); - if (needFocusUpdate) { - // 执行 npm install -g @opentiny/cli 和 @opentiny/cli-install更新本地系统 - const depen = [`${data.name}`, '@opentiny/cli-install']; - await index_4.default.install(depen, { - // global安装 - g: true, - }); - log.success('当前cli工具已更新至最新版本'); - // cli工具更新完成,终止进程 - process.exit(1); - } - return needFocusUpdate; -} -exports.default = updateTip; diff --git a/packages/cli/devkit/lib/upgrade/locale/index.d.ts b/packages/cli/devkit/lib/upgrade/locale/index.d.ts deleted file mode 100644 index 7eb57273..00000000 --- a/packages/cli/devkit/lib/upgrade/locale/index.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -declare const _default: { - zh: { - updateTips: string; - recommendVersion: string; - recommendedVersion: string; - updateCommand: string; - updatingCommand: string; - ifUpdateError: string; - }; - en: { - updateTips: string; - recommendVersion: string; - recommendedVersion: string; - updateCommand: string; - updatingCommand: string; - ifUpdateError: string; - }; -}; -export default _default; diff --git a/packages/cli/devkit/lib/upgrade/locale/index.js b/packages/cli/devkit/lib/upgrade/locale/index.js deleted file mode 100644 index b23b9362..00000000 --- a/packages/cli/devkit/lib/upgrade/locale/index.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = { - zh: { - updateTips: '升级提示', - recommendVersion: '推荐的版本是 {latest} , 本地版本是 {localVersion}, 建议升级后再使用,保证功能的稳定性', - recommendedVersion: '推荐的版本是 {latest} , 本地版本是 {localVersion}, 为保证功能的稳定性,需进行更新', - updateCommand: '请执行 {icon} {command} 来升级', - updatingCommand: '系统正在执行 {icon} {command} 自动升级', - ifUpdateError: '如果提示没有权限,请尝试', - }, - en: { - updateTips: 'Upgrade tips', - recommendVersion: 'Recommended version is {latest}, the local version is {localVersion}, it is recommended to upgrade and then use', - recommendedVersion: 'Recommended version is {latest}, the local version is {localVersion}, and the system will be updated automatically to ensure the stability', - updateCommand: 'Please use {icon} {command} to upgrade', - updatingCommand: 'The system is performing {icon} {command} automatic upgrade', - ifUpdateError: "If the prompt shows that you don't have permission, please try", - }, -}; diff --git a/packages/cli/devkit/lib/user/index.d.ts b/packages/cli/devkit/lib/user/index.d.ts deleted file mode 100644 index c736e8de..00000000 --- a/packages/cli/devkit/lib/user/index.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @desc 根据用户当前 git 信息去获取用户相关信息 - */ -import { UserInfo } from './interface'; -/** - * 获取当前电脑用户 - */ -export declare function get(): UserInfo; -/** - * 写入user缓存 - * @param data 需要写入用户信息字段的数据 - */ -export declare function set(data: any): void; -declare const _default: { - get: typeof get; - set: typeof set; -}; -export default _default; diff --git a/packages/cli/devkit/lib/user/index.js b/packages/cli/devkit/lib/user/index.js deleted file mode 100644 index e0c55187..00000000 --- a/packages/cli/devkit/lib/user/index.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -/** - * @desc 根据用户当前 git 信息去获取用户相关信息 - */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.set = exports.get = void 0; -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const utils = __importStar(require("./utils")); -const index_1 = __importDefault(require("../home/index")); -const index_2 = require("../cli-config/index"); -/** - * 获取当前电脑用户 - */ -function get() { - let userInfo = utils.getUserFromFile(); - if (!userInfo.email) { - userInfo = utils.getUserFromGit(); - // 获取之后再写入进去 - if (userInfo.name && userInfo.email) { - const userFile = path.join(index_1.default.getHomePath(), index_2.FILE_USER); - fs_extra_1.default.outputJsonSync(userFile, userInfo, { spaces: 2 }); - } - } - return userInfo; -} -exports.get = get; -/** - * 写入user缓存 - * @param data 需要写入用户信息字段的数据 - */ -function set(data) { - // 获取home下的aio.user.json - const userFile = path.join(index_1.default.getHomePath(), index_2.FILE_USER); - if (fs_extra_1.default.existsSync(userFile)) { - const user = fs_extra_1.default.readJsonSync(userFile); - const userInfo = Object.assign(user, data); - fs_extra_1.default.outputJsonSync(userFile, userInfo, { spaces: 2 }); - } -} -exports.set = set; -exports.default = { - get, - set, -}; diff --git a/packages/cli/devkit/lib/user/interface.d.ts b/packages/cli/devkit/lib/user/interface.d.ts deleted file mode 100644 index ecc59244..00000000 --- a/packages/cli/devkit/lib/user/interface.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface UserInfo { - name: string; - email: string; - id?: number; - username?: string; - state?: string; - avatar_url?: string; - [propName: string]: any; -} diff --git a/packages/cli/devkit/lib/user/interface.js b/packages/cli/devkit/lib/user/interface.js deleted file mode 100644 index c8ad2e54..00000000 --- a/packages/cli/devkit/lib/user/interface.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/cli/devkit/lib/user/utils.d.ts b/packages/cli/devkit/lib/user/utils.d.ts deleted file mode 100644 index 8614d381..00000000 --- a/packages/cli/devkit/lib/user/utils.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface UserInfo { - name: string; - email: string; -} -/** - * 从配置文件中获取用户信息 - */ -export declare function getUserFromFile(): UserInfo; -/** - * 从git的配置文件中获取用户信息 - */ -export declare function getUserFromGit(): UserInfo; diff --git a/packages/cli/devkit/lib/user/utils.js b/packages/cli/devkit/lib/user/utils.js deleted file mode 100644 index 82bbf1e9..00000000 --- a/packages/cli/devkit/lib/user/utils.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getUserFromGit = exports.getUserFromFile = void 0; -const index_1 = __importDefault(require("../home/index")); -const fs_extra_1 = __importDefault(require("fs-extra")); -const path = __importStar(require("path")); -const index_2 = __importDefault(require("../log/index")); -const cross_spawn_1 = __importDefault(require("cross-spawn")); -const index_3 = require("../cli-config/index"); -const log = index_2.default('core-user'); -/** - * 从配置文件中获取用户信息 - */ -function getUserFromFile() { - const userInfo = { - name: '', - email: '', - }; - // 获取home下的aio.user.json - const userFile = path.join(index_1.default.getHomePath(), index_3.FILE_USER); - if (fs_extra_1.default.existsSync(userFile)) { - const user = fs_extra_1.default.readJsonSync(userFile); - userInfo.name = user.name; - userInfo.email = user.email; - } - return userInfo; -} -exports.getUserFromFile = getUserFromFile; -/** - * 从git的配置文件中获取用户信息 - */ -function getUserFromGit() { - const userInfo = { - name: '', - email: '', - }; - const reg = /user\.name=([^\n]+)\nuser\.email=([^\n]+)/; - try { - const results = cross_spawn_1.default.sync('git', ['config', '--list']); - if (results.stdout) { - const match = results.stdout.toString().match(reg); - if (match && match.length > 1) { - userInfo.name = match[1]; - userInfo.email = match[2]; - } - else { - const msg = 'git config --list 没有git 信息,请检查git是否正确配置了用户名和email'; - log.debug(msg); - } - } - else { - const msg = '没有安装git'; - log.debug(msg); - } - } - catch (ex) { - log.debug('aio-user', ex); - throw ex; - } - return userInfo; -} -exports.getUserFromGit = getUserFromGit; From d2853d9bc8f14946f76f5092271e9bd05ee7d5fd Mon Sep 17 00:00:00 2001 From: hexqi Date: Mon, 3 Jul 2023 20:51:20 -0700 Subject: [PATCH 2/2] chore: add types/node --- packages/cli/devkit/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/devkit/package.json b/packages/cli/devkit/package.json index 5df8ac90..18856f16 100644 --- a/packages/cli/devkit/package.json +++ b/packages/cli/devkit/package.json @@ -46,6 +46,7 @@ }, "devDependencies": { "@opentiny/cli-typescript": "^1.0.0-alpha.0", + "@types/node": "^20.3.3", "@vercel/ncc": "^0.27.0", "ava": "^3.15.0", "typescript": "^4.7.4"