commit
bdaac9d33f
24 changed files with 3369 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||
# http://editorconfig.org |
|||
root = true # 应在文件顶部指定的特殊属性,true表示停止搜索当前文件 |
|||
|
|||
[*] |
|||
charset = utf-8 # 统一字符格式 |
|||
indent_style = space # 缩进方式为空格 |
|||
indent_size = 2 # 缩进为两个空格 |
|||
end_of_line = lf # 换行符统一用lf |
|||
insert_final_newline = true # 保证文件结尾留一个空行 |
|||
trim_trailing_whitespace = true # 移除新一行前的空白字符 |
|||
|
|||
[*.md] |
|||
insert_final_newline = false |
|||
trim_trailing_whitespace = false |
@ -0,0 +1,3 @@ |
|||
node_modules |
|||
.idea |
|||
.vscode |
@ -0,0 +1 @@ |
|||
# @noderun/pp |
@ -0,0 +1 @@ |
|||
dev |
@ -0,0 +1 @@ |
|||
fuck |
@ -0,0 +1 @@ |
|||
master |
@ -0,0 +1,196 @@ |
|||
#!/usr/bin/env node
|
|||
'use strict'; |
|||
|
|||
var commander = require('commander'); |
|||
var tslib = require('tslib'); |
|||
var fs = require('fs-extra'); |
|||
var chalk = require('chalk'); |
|||
var uuid = require('uuid'); |
|||
var path = require('path'); |
|||
var os = require('os'); |
|||
var download = require('download-git-repo'); |
|||
var ejs = require('ejs'); |
|||
var ini = require('ini'); |
|||
|
|||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } |
|||
|
|||
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); |
|||
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk); |
|||
var uuid__default = /*#__PURE__*/_interopDefaultLegacy(uuid); |
|||
var path__default = /*#__PURE__*/_interopDefaultLegacy(path); |
|||
var os__default = /*#__PURE__*/_interopDefaultLegacy(os); |
|||
var download__default = /*#__PURE__*/_interopDefaultLegacy(download); |
|||
var ejs__default = /*#__PURE__*/_interopDefaultLegacy(ejs); |
|||
var ini__default = /*#__PURE__*/_interopDefaultLegacy(ini); |
|||
|
|||
var config = { |
|||
dir: path__default["default"].join(os__default["default"].homedir(), '.pp'), |
|||
configPath: path__default["default"].join(os__default["default"].homedir(), '.pp', '.pprc') |
|||
}; |
|||
|
|||
function walkDir(dir, cb) { |
|||
function _walk(_dir) { |
|||
if (_dir === void 0) { _dir = '.'; } |
|||
var statInfo = fs__default["default"].statSync(dir + path__default["default"].sep + _dir); |
|||
if (statInfo.isDirectory()) { |
|||
var paths = fs__default["default"].readdirSync(path__default["default"].resolve(dir + path__default["default"].sep + _dir)); |
|||
for (var i = 0; i < paths.length; i++) { |
|||
_walk(_dir + path__default["default"].sep + paths[i]); |
|||
} |
|||
} |
|||
else if (statInfo.isFile()) { |
|||
cb && cb(_dir); |
|||
} |
|||
return true; |
|||
} |
|||
return _walk(); |
|||
} |
|||
function isExist(file) { |
|||
var result = false; |
|||
try { |
|||
fs__default["default"].accessSync(file, fs__default["default"].constants.F_OK | fs__default["default"].constants.R_OK | fs__default["default"].constants.W_OK); |
|||
result = true; |
|||
} |
|||
catch (err) { |
|||
result = false; |
|||
} |
|||
return result; |
|||
} |
|||
function writefile(fromDir, toDir, opts, force) { |
|||
if (opts === void 0) { opts = {}; } |
|||
if (force === void 0) { force = false; } |
|||
if (!fromDir) { |
|||
console.log(chalk__default["default"].red("缺少模板目录")); |
|||
return; |
|||
} |
|||
if (!toDir) { |
|||
console.log(chalk__default["default"].red("缺少目标目录")); |
|||
return; |
|||
} |
|||
if (isExist(toDir) && !force) { |
|||
console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录")); |
|||
return; |
|||
} |
|||
walkDir(fromDir, function (file) { |
|||
var fromRes = path__default["default"].resolve(fromDir, file); |
|||
var toRes = path__default["default"].resolve(toDir, file); |
|||
fs__default["default"].ensureFileSync(toRes); |
|||
var originRoot = fs__default["default"].readFileSync(fromRes, { |
|||
encoding: "utf8", |
|||
}); |
|||
var html = ejs__default["default"].render(originRoot, opts); |
|||
fs__default["default"].writeFileSync(toRes, html); |
|||
}); |
|||
} |
|||
|
|||
function readFile(path, encoding) { |
|||
if (encoding === void 0) { encoding = "utf-8"; } |
|||
return fs__default["default"].readFileSync(path, encoding); |
|||
} |
|||
function readIniFile(path, encoding) { |
|||
if (encoding === void 0) { encoding = "utf-8"; } |
|||
return ini__default["default"].parse(fs__default["default"].readFileSync(path, encoding)); |
|||
} |
|||
function writeIniFile(path, data) { |
|||
fs__default["default"].writeFileSync(path, ini__default["default"].stringify(data)); |
|||
} |
|||
|
|||
try { |
|||
fs__default["default"].ensureDirSync(config.dir); |
|||
fs__default["default"].ensureFileSync(config.configPath); |
|||
} |
|||
catch (e) { |
|||
throw e; |
|||
} |
|||
var Opts = readIniFile(config.configPath); |
|||
function onList(opt) { |
|||
if (!Opts.list || !Object.keys(Opts.list).length) { |
|||
console.log("暂无模板列表,请自行体添加"); |
|||
return; |
|||
} |
|||
Object.keys(Opts.list).forEach(function (key) { |
|||
var value = Opts.list[key]; |
|||
if (opt === null || opt === void 0 ? void 0 : opt.all) { |
|||
console.log(value.name + (value.desc ? "(" + value.desc + ")" : "") + (": " + value.url)); |
|||
} |
|||
else { |
|||
console.log(value.name + (value.desc ? "(" + value.desc + ")" : "")); |
|||
} |
|||
}); |
|||
} |
|||
function onClone(name, opts) { |
|||
if (!Opts.list || !Opts.list[name]) { |
|||
console.log("请先添加项目"); |
|||
return; |
|||
} |
|||
var data = Opts.list[name]; |
|||
var tempPath = path__default["default"].join(os__default["default"].tmpdir(), "pp-" + uuid__default["default"].v4()); |
|||
var to = opts.dir; |
|||
var git_url = "direct:" + data.url; |
|||
if (isExist(to)) { |
|||
console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹")); |
|||
return; |
|||
} |
|||
download__default["default"](git_url, tempPath, { clone: true }, function (err) { |
|||
if (err) |
|||
throw err; |
|||
writefile(tempPath, to, { name: "哈哈" }); |
|||
fs__default["default"].removeSync(tempPath); |
|||
console.log(chalk__default["default"].green("克隆成功")); |
|||
console.log("\ncd " + to + "\n"); |
|||
}); |
|||
} |
|||
function onRemove(name) { |
|||
var result = Object.assign({}, Opts); |
|||
if (result.list && result.list[name]) { |
|||
delete result.list[name]; |
|||
writeIniFile(config.configPath, result); |
|||
console.log(chalk__default["default"].green("删除成功")); |
|||
} |
|||
else { |
|||
console.error(chalk__default["default"].red("不存在该模板")); |
|||
} |
|||
} |
|||
function onAdd(url, opt) { |
|||
var result = Object.assign({}, Opts); |
|||
var http = /^(http|https)\:\/\//g; |
|||
var git = /(git|root)\@/g; |
|||
if (!git.test(url) && !http.test(url)) { |
|||
console.error(chalk__default["default"].red("请添加正确的Git仓库地址")); |
|||
return; |
|||
} |
|||
if (!result.list) |
|||
result.list = {}; |
|||
if (result.list[opt.name]) { |
|||
console.error(chalk__default["default"].red("名字重复,当前存在:")); |
|||
onList(); |
|||
return; |
|||
} |
|||
result.list[opt.name] = tslib.__assign(tslib.__assign({}, opt), { url: url }); |
|||
writeIniFile(config.configPath, result); |
|||
console.log(chalk__default["default"].green("添加成功")); |
|||
} |
|||
function onCheck() { |
|||
console.log(readFile(config.configPath)); |
|||
} |
|||
|
|||
var program = new commander.Command(); |
|||
program.version("0.0.1", "-v, --version").description("查看当前版本号"); |
|||
program.helpOption("-h --help", "显示帮助信息"); |
|||
program.showHelpAfterError("( pp -h 查看帮助信息)"); |
|||
program.command("list").option('-a --all').description("查看所有模板列表").action(onList); |
|||
program.command("check").description("查看配置文件").action(onCheck); |
|||
program |
|||
.command("add <url>") |
|||
.requiredOption("-n --name <name>", "模板名字") |
|||
.option("-d --desc <desc>", "模板具体描述") |
|||
.option("-t --tag <tag>", "模板标签") |
|||
.description("添加一个模板仓库") |
|||
.action(onAdd); |
|||
program |
|||
.command("rm <name>") |
|||
.description("删除一个模板仓库") |
|||
.action(onRemove); |
|||
program.command("clone <name>").requiredOption("-d --dir <dir>", "目标路径").description("克隆模板仓库").action(onClone); |
|||
program.parse(process.argv); |
|||
//# sourceMappingURL=pp.cjs.js.map
|
@ -0,0 +1 @@ |
|||
{"version":3,"file":"pp.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} |
@ -0,0 +1,14 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="UTF-8" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
|||
<title>pp</title> |
|||
</head> |
|||
<body> |
|||
<script src="../dist/pp.umd.js"></script> |
|||
<script> |
|||
new pp() |
|||
</script> |
|||
</body> |
|||
</html> |
@ -0,0 +1,920 @@ |
|||
{ |
|||
"name": "@noderun/pp", |
|||
"version": "0.0.1", |
|||
"lockfileVersion": 1, |
|||
"requires": true, |
|||
"dependencies": { |
|||
"@rollup/plugin-alias": { |
|||
"version": "3.1.1", |
|||
"resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz", |
|||
"integrity": "sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"slash": "^3.0.0" |
|||
} |
|||
}, |
|||
"@rollup/plugin-commonjs": { |
|||
"version": "15.0.0", |
|||
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz", |
|||
"integrity": "sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@rollup/pluginutils": "^3.1.0", |
|||
"commondir": "^1.0.1", |
|||
"estree-walker": "^2.0.1", |
|||
"glob": "^7.1.6", |
|||
"is-reference": "^1.2.1", |
|||
"magic-string": "^0.25.7", |
|||
"resolve": "^1.17.0" |
|||
}, |
|||
"dependencies": { |
|||
"estree-walker": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", |
|||
"integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", |
|||
"dev": true |
|||
} |
|||
} |
|||
}, |
|||
"@rollup/plugin-node-resolve": { |
|||
"version": "13.0.6", |
|||
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", |
|||
"integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@rollup/pluginutils": "^3.1.0", |
|||
"@types/resolve": "1.17.1", |
|||
"builtin-modules": "^3.1.0", |
|||
"deepmerge": "^4.2.2", |
|||
"is-module": "^1.0.0", |
|||
"resolve": "^1.19.0" |
|||
}, |
|||
"dependencies": { |
|||
"resolve": { |
|||
"version": "1.20.0", |
|||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", |
|||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", |
|||
"dev": true, |
|||
"requires": { |
|||
"is-core-module": "^2.2.0", |
|||
"path-parse": "^1.0.6" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"@rollup/plugin-replace": { |
|||
"version": "2.3.3", |
|||
"resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz", |
|||
"integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@rollup/pluginutils": "^3.0.8", |
|||
"magic-string": "^0.25.5" |
|||
} |
|||
}, |
|||
"@rollup/pluginutils": { |
|||
"version": "3.1.0", |
|||
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", |
|||
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/estree": "0.0.39", |
|||
"estree-walker": "^1.0.1", |
|||
"picomatch": "^2.2.2" |
|||
} |
|||
}, |
|||
"@types/color-name": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", |
|||
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", |
|||
"dev": true |
|||
}, |
|||
"@types/detect-indent": { |
|||
"version": "0.1.30", |
|||
"resolved": "https://registry.npmjs.org/@types/detect-indent/-/detect-indent-0.1.30.tgz", |
|||
"integrity": "sha1-3GgrtBK05lugmOcO2tc7SDP7kQ0=", |
|||
"dev": true |
|||
}, |
|||
"@types/estree": { |
|||
"version": "0.0.39", |
|||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", |
|||
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", |
|||
"dev": true |
|||
}, |
|||
"@types/fs-extra": { |
|||
"version": "9.0.13", |
|||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", |
|||
"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/node": "*" |
|||
} |
|||
}, |
|||
"@types/glob": { |
|||
"version": "5.0.30", |
|||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", |
|||
"integrity": "sha1-ECZAnFYlqGiQdGAoCNCCsoZ7ilE=", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/minimatch": "*", |
|||
"@types/node": "*" |
|||
} |
|||
}, |
|||
"@types/ini": { |
|||
"version": "1.3.31", |
|||
"resolved": "https://registry.npmjs.org/@types/ini/-/ini-1.3.31.tgz", |
|||
"integrity": "sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w==" |
|||
}, |
|||
"@types/minimatch": { |
|||
"version": "3.0.3", |
|||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", |
|||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", |
|||
"dev": true |
|||
}, |
|||
"@types/mkdirp": { |
|||
"version": "0.3.29", |
|||
"resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", |
|||
"integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", |
|||
"dev": true |
|||
}, |
|||
"@types/node": { |
|||
"version": "15.14.9", |
|||
"resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-15.14.9.tgz?cache=0&sync_timestamp=1636407492316&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.14.9.tgz", |
|||
"integrity": "sha1-vEPJkMPJvnKBhou8e4/dbitXrfo=", |
|||
"dev": true |
|||
}, |
|||
"@types/rc": { |
|||
"version": "1.2.0", |
|||
"resolved": "https://registry.npmjs.org/@types/rc/-/rc-1.2.0.tgz", |
|||
"integrity": "sha512-eEQ6Hq0K0VShe00iDzG1DKxA5liTsk7jgcR5eDZ5d5cnivLjPqqcDgqurS5NlQJNfgTNg51dp7zFGWHomr5NJQ==", |
|||
"dev": true |
|||
}, |
|||
"@types/resolve": { |
|||
"version": "1.17.1", |
|||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", |
|||
"integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/node": "*" |
|||
} |
|||
}, |
|||
"ansi-styles": { |
|||
"version": "4.2.1", |
|||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", |
|||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/color-name": "^1.1.1", |
|||
"color-convert": "^2.0.1" |
|||
} |
|||
}, |
|||
"at-least-node": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", |
|||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", |
|||
"dev": true |
|||
}, |
|||
"atob": { |
|||
"version": "2.1.2", |
|||
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", |
|||
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", |
|||
"dev": true |
|||
}, |
|||
"balanced-match": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
|||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", |
|||
"dev": true |
|||
}, |
|||
"brace-expansion": { |
|||
"version": "1.1.11", |
|||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
|||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"balanced-match": "^1.0.0", |
|||
"concat-map": "0.0.1" |
|||
} |
|||
}, |
|||
"builtin-modules": { |
|||
"version": "3.2.0", |
|||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", |
|||
"integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", |
|||
"dev": true |
|||
}, |
|||
"chalk": { |
|||
"version": "4.1.0", |
|||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", |
|||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", |
|||
"dev": true, |
|||
"requires": { |
|||
"ansi-styles": "^4.1.0", |
|||
"supports-color": "^7.1.0" |
|||
} |
|||
}, |
|||
"color-convert": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", |
|||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"color-name": "~1.1.4" |
|||
} |
|||
}, |
|||
"color-name": { |
|||
"version": "1.1.4", |
|||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
|||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
|||
"dev": true |
|||
}, |
|||
"commander": { |
|||
"version": "8.3.0", |
|||
"resolved": "https://registry.npmmirror.com/commander/download/commander-8.3.0.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-8.3.0.tgz", |
|||
"integrity": "sha1-SDfqGy2me5xhamevuw+v7lZ7ymY=" |
|||
}, |
|||
"commondir": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", |
|||
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", |
|||
"dev": true |
|||
}, |
|||
"concat-map": { |
|||
"version": "0.0.1", |
|||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
|||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
|||
"dev": true |
|||
}, |
|||
"cross-env": { |
|||
"version": "7.0.3", |
|||
"resolved": "https://registry.nlark.com/cross-env/download/cross-env-7.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcross-env%2Fdownload%2Fcross-env-7.0.3.tgz", |
|||
"integrity": "sha1-hlJkspZ33AFbqEGJGJZd0jL8VM8=", |
|||
"dev": true, |
|||
"requires": { |
|||
"cross-spawn": "^7.0.1" |
|||
} |
|||
}, |
|||
"cross-spawn": { |
|||
"version": "7.0.3", |
|||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", |
|||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", |
|||
"dev": true, |
|||
"requires": { |
|||
"path-key": "^3.1.0", |
|||
"shebang-command": "^2.0.0", |
|||
"which": "^2.0.1" |
|||
} |
|||
}, |
|||
"decode-uri-component": { |
|||
"version": "0.2.0", |
|||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", |
|||
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", |
|||
"dev": true |
|||
}, |
|||
"deep-extend": { |
|||
"version": "0.6.0", |
|||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", |
|||
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" |
|||
}, |
|||
"deepmerge": { |
|||
"version": "4.2.2", |
|||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", |
|||
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", |
|||
"dev": true |
|||
}, |
|||
"detect-indent": { |
|||
"version": "0.2.0", |
|||
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-0.2.0.tgz", |
|||
"integrity": "sha1-BCkUSYl5rC2fPHPk/z5od9O8krY=", |
|||
"dev": true, |
|||
"requires": { |
|||
"get-stdin": "^0.1.0", |
|||
"minimist": "^0.1.0" |
|||
} |
|||
}, |
|||
"dts-bundle": { |
|||
"version": "0.7.3", |
|||
"resolved": "https://registry.npmjs.org/dts-bundle/-/dts-bundle-0.7.3.tgz", |
|||
"integrity": "sha1-Nyt7tpyCB4LmOC9ABzmmnc7T1Zo=", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/detect-indent": "0.1.30", |
|||
"@types/glob": "5.0.30", |
|||
"@types/mkdirp": "0.3.29", |
|||
"@types/node": "8.0.0", |
|||
"commander": "^2.9.0", |
|||
"detect-indent": "^0.2.0", |
|||
"glob": "^6.0.4", |
|||
"mkdirp": "^0.5.0" |
|||
}, |
|||
"dependencies": { |
|||
"@types/node": { |
|||
"version": "8.0.0", |
|||
"resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-8.0.0.tgz?cache=0&sync_timestamp=1636407492316&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-8.0.0.tgz", |
|||
"integrity": "sha1-rKqJJHr93Hln6ZAv0Rdh2t6hpVU=", |
|||
"dev": true |
|||
}, |
|||
"commander": { |
|||
"version": "2.20.3", |
|||
"resolved": "https://registry.npmmirror.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz", |
|||
"integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", |
|||
"dev": true |
|||
}, |
|||
"glob": { |
|||
"version": "6.0.4", |
|||
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", |
|||
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", |
|||
"dev": true, |
|||
"requires": { |
|||
"inflight": "^1.0.4", |
|||
"inherits": "2", |
|||
"minimatch": "2 || 3", |
|||
"once": "^1.3.0", |
|||
"path-is-absolute": "^1.0.0" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"end-of-stream": { |
|||
"version": "1.4.4", |
|||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", |
|||
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", |
|||
"dev": true, |
|||
"requires": { |
|||
"once": "^1.4.0" |
|||
} |
|||
}, |
|||
"estree-walker": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", |
|||
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", |
|||
"dev": true |
|||
}, |
|||
"execa": { |
|||
"version": "4.0.3", |
|||
"resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", |
|||
"integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", |
|||
"dev": true, |
|||
"requires": { |
|||
"cross-spawn": "^7.0.0", |
|||
"get-stream": "^5.0.0", |
|||
"human-signals": "^1.1.1", |
|||
"is-stream": "^2.0.0", |
|||
"merge-stream": "^2.0.0", |
|||
"npm-run-path": "^4.0.0", |
|||
"onetime": "^5.1.0", |
|||
"signal-exit": "^3.0.2", |
|||
"strip-final-newline": "^2.0.0" |
|||
} |
|||
}, |
|||
"find-cache-dir": { |
|||
"version": "3.3.1", |
|||
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", |
|||
"integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"commondir": "^1.0.1", |
|||
"make-dir": "^3.0.2", |
|||
"pkg-dir": "^4.1.0" |
|||
}, |
|||
"dependencies": { |
|||
"make-dir": { |
|||
"version": "3.1.0", |
|||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", |
|||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"semver": "^6.0.0" |
|||
} |
|||
}, |
|||
"semver": { |
|||
"version": "6.3.0", |
|||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", |
|||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", |
|||
"dev": true |
|||
} |
|||
} |
|||
}, |
|||
"find-up": { |
|||
"version": "4.1.0", |
|||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", |
|||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"locate-path": "^5.0.0", |
|||
"path-exists": "^4.0.0" |
|||
} |
|||
}, |
|||
"fs-extra": { |
|||
"version": "9.0.1", |
|||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", |
|||
"integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"at-least-node": "^1.0.0", |
|||
"graceful-fs": "^4.2.0", |
|||
"jsonfile": "^6.0.1", |
|||
"universalify": "^1.0.0" |
|||
} |
|||
}, |
|||
"fs.realpath": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
|||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
|||
"dev": true |
|||
}, |
|||
"function-bind": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |
|||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", |
|||
"dev": true |
|||
}, |
|||
"get-stdin": { |
|||
"version": "0.1.0", |
|||
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-0.1.0.tgz", |
|||
"integrity": "sha1-WZivJKr8gC0VyCxoVlfuuLENSpE=", |
|||
"dev": true |
|||
}, |
|||
"get-stream": { |
|||
"version": "5.2.0", |
|||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", |
|||
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"pump": "^3.0.0" |
|||
} |
|||
}, |
|||
"glob": { |
|||
"version": "7.1.6", |
|||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
|||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"fs.realpath": "^1.0.0", |
|||
"inflight": "^1.0.4", |
|||
"inherits": "2", |
|||
"minimatch": "^3.0.4", |
|||
"once": "^1.3.0", |
|||
"path-is-absolute": "^1.0.0" |
|||
} |
|||
}, |
|||
"graceful-fs": { |
|||
"version": "4.2.4", |
|||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", |
|||
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", |
|||
"dev": true |
|||
}, |
|||
"has": { |
|||
"version": "1.0.3", |
|||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |
|||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"function-bind": "^1.1.1" |
|||
} |
|||
}, |
|||
"has-flag": { |
|||
"version": "4.0.0", |
|||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", |
|||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
|||
"dev": true |
|||
}, |
|||
"human-signals": { |
|||
"version": "1.1.1", |
|||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", |
|||
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", |
|||
"dev": true |
|||
}, |
|||
"inflight": { |
|||
"version": "1.0.6", |
|||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
|||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
|||
"dev": true, |
|||
"requires": { |
|||
"once": "^1.3.0", |
|||
"wrappy": "1" |
|||
} |
|||
}, |
|||
"inherits": { |
|||
"version": "2.0.4", |
|||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
|||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
|||
"dev": true |
|||
}, |
|||
"ini": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", |
|||
"integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" |
|||
}, |
|||
"is-core-module": { |
|||
"version": "2.8.0", |
|||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", |
|||
"integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"has": "^1.0.3" |
|||
} |
|||
}, |
|||
"is-module": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", |
|||
"integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", |
|||
"dev": true |
|||
}, |
|||
"is-reference": { |
|||
"version": "1.2.1", |
|||
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", |
|||
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@types/estree": "*" |
|||
} |
|||
}, |
|||
"is-stream": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", |
|||
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", |
|||
"dev": true |
|||
}, |
|||
"isexe": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", |
|||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", |
|||
"dev": true |
|||
}, |
|||
"jsonfile": { |
|||
"version": "6.0.1", |
|||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", |
|||
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", |
|||
"dev": true, |
|||
"requires": { |
|||
"graceful-fs": "^4.1.6", |
|||
"universalify": "^1.0.0" |
|||
} |
|||
}, |
|||
"locate-path": { |
|||
"version": "5.0.0", |
|||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", |
|||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", |
|||
"dev": true, |
|||
"requires": { |
|||
"p-locate": "^4.1.0" |
|||
} |
|||
}, |
|||
"lodash": { |
|||
"version": "4.17.20", |
|||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", |
|||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", |
|||
"dev": true |
|||
}, |
|||
"magic-string": { |
|||
"version": "0.25.7", |
|||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", |
|||
"integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"sourcemap-codec": "^1.4.4" |
|||
} |
|||
}, |
|||
"merge-stream": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", |
|||
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", |
|||
"dev": true |
|||
}, |
|||
"mimic-fn": { |
|||
"version": "2.1.0", |
|||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", |
|||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", |
|||
"dev": true |
|||
}, |
|||
"minimatch": { |
|||
"version": "3.0.4", |
|||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
|||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"brace-expansion": "^1.1.7" |
|||
} |
|||
}, |
|||
"minimist": { |
|||
"version": "0.1.0", |
|||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", |
|||
"integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", |
|||
"dev": true |
|||
}, |
|||
"mkdirp": { |
|||
"version": "0.5.5", |
|||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", |
|||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"minimist": "^1.2.5" |
|||
}, |
|||
"dependencies": { |
|||
"minimist": { |
|||
"version": "1.2.5", |
|||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |
|||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", |
|||
"dev": true |
|||
} |
|||
} |
|||
}, |
|||
"npm-run-path": { |
|||
"version": "4.0.1", |
|||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", |
|||
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"path-key": "^3.0.0" |
|||
} |
|||
}, |
|||
"once": { |
|||
"version": "1.4.0", |
|||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
|||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
|||
"dev": true, |
|||
"requires": { |
|||
"wrappy": "1" |
|||
} |
|||
}, |
|||
"onetime": { |
|||
"version": "5.1.2", |
|||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", |
|||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", |
|||
"dev": true, |
|||
"requires": { |
|||
"mimic-fn": "^2.1.0" |
|||
} |
|||
}, |
|||
"p-limit": { |
|||
"version": "2.3.0", |
|||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", |
|||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", |
|||
"dev": true, |
|||
"requires": { |
|||
"p-try": "^2.0.0" |
|||
} |
|||
}, |
|||
"p-locate": { |
|||
"version": "4.1.0", |
|||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", |
|||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", |
|||
"dev": true, |
|||
"requires": { |
|||
"p-limit": "^2.2.0" |
|||
} |
|||
}, |
|||
"p-try": { |
|||
"version": "2.2.0", |
|||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", |
|||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", |
|||
"dev": true |
|||
}, |
|||
"path-exists": { |
|||
"version": "4.0.0", |
|||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", |
|||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", |
|||
"dev": true |
|||
}, |
|||
"path-is-absolute": { |
|||
"version": "1.0.1", |
|||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
|||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", |
|||
"dev": true |
|||
}, |
|||
"path-key": { |
|||
"version": "3.1.1", |
|||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", |
|||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", |
|||
"dev": true |
|||
}, |
|||
"path-parse": { |
|||
"version": "1.0.6", |
|||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", |
|||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
|||
"dev": true |
|||
}, |
|||
"picomatch": { |
|||
"version": "2.2.2", |
|||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", |
|||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", |
|||
"dev": true |
|||
}, |
|||
"pkg-dir": { |
|||
"version": "4.2.0", |
|||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", |
|||
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"find-up": "^4.0.0" |
|||
} |
|||
}, |
|||
"pump": { |
|||
"version": "3.0.0", |
|||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", |
|||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", |
|||
"dev": true, |
|||
"requires": { |
|||
"end-of-stream": "^1.1.0", |
|||
"once": "^1.3.1" |
|||
} |
|||
}, |
|||
"rc": { |
|||
"version": "1.2.8", |
|||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", |
|||
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", |
|||
"requires": { |
|||
"deep-extend": "^0.6.0", |
|||
"ini": "~1.3.0", |
|||
"minimist": "^1.2.0", |
|||
"strip-json-comments": "~2.0.1" |
|||
}, |
|||
"dependencies": { |
|||
"ini": { |
|||
"version": "1.3.8", |
|||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", |
|||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" |
|||
}, |
|||
"minimist": { |
|||
"version": "1.2.5", |
|||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |
|||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" |
|||
} |
|||
} |
|||
}, |
|||
"resolve": { |
|||
"version": "1.17.0", |
|||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", |
|||
"integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", |
|||
"dev": true, |
|||
"requires": { |
|||
"path-parse": "^1.0.6" |
|||
} |
|||
}, |
|||
"rollup": { |
|||
"version": "2.26.3", |
|||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.3.tgz", |
|||
"integrity": "sha512-Mlt39/kL2rA9egcbQbaZV1SNVplGqYYhDDMcGgHPPE0tvM3R4GrB+IEdYy2QtTrdzMQx57ZcqDFf/KWWm8F+uw==", |
|||
"dev": true, |
|||
"requires": { |
|||
"fsevents": "~2.1.2" |
|||
}, |
|||
"dependencies": { |
|||
"fsevents": { |
|||
"version": "2.1.3", |
|||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", |
|||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", |
|||
"dev": true, |
|||
"optional": true |
|||
} |
|||
} |
|||
}, |
|||
"rollup-plugin-sourcemaps": { |
|||
"version": "0.6.2", |
|||
"resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz", |
|||
"integrity": "sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@rollup/pluginutils": "^3.0.9", |
|||
"source-map-resolve": "^0.6.0" |
|||
} |
|||
}, |
|||
"rollup-plugin-typescript2": { |
|||
"version": "0.27.2", |
|||
"resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.2.tgz", |
|||
"integrity": "sha512-zarMH2F8oT/NO6p20gl/jkts+WxyzOlhOIUwUU/EDx5e6ewdDPS/flwLj5XFuijUCr64bZwqKuRVwCPdXXYefQ==", |
|||
"dev": true, |
|||
"requires": { |
|||
"@rollup/pluginutils": "^3.1.0", |
|||
"find-cache-dir": "^3.3.1", |
|||
"fs-extra": "8.1.0", |
|||
"resolve": "1.17.0", |
|||
"tslib": "2.0.1" |
|||
}, |
|||
"dependencies": { |
|||
"fs-extra": { |
|||
"version": "8.1.0", |
|||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", |
|||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", |
|||
"dev": true, |
|||
"requires": { |
|||
"graceful-fs": "^4.2.0", |
|||
"jsonfile": "^4.0.0", |
|||
"universalify": "^0.1.0" |
|||
} |
|||
}, |
|||
"jsonfile": { |
|||
"version": "4.0.0", |
|||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", |
|||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", |
|||
"dev": true, |
|||
"requires": { |
|||
"graceful-fs": "^4.1.6" |
|||
} |
|||
}, |
|||
"universalify": { |
|||
"version": "0.1.2", |
|||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", |
|||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", |
|||
"dev": true |
|||
} |
|||
} |
|||
}, |
|||
"shebang-command": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", |
|||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"shebang-regex": "^3.0.0" |
|||
} |
|||
}, |
|||
"shebang-regex": { |
|||
"version": "3.0.0", |
|||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", |
|||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", |
|||
"dev": true |
|||
}, |
|||
"signal-exit": { |
|||
"version": "3.0.3", |
|||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", |
|||
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", |
|||
"dev": true |
|||
}, |
|||
"slash": { |
|||
"version": "3.0.0", |
|||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", |
|||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", |
|||
"dev": true |
|||
}, |
|||
"source-map-resolve": { |
|||
"version": "0.6.0", |
|||
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", |
|||
"integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", |
|||
"dev": true, |
|||
"requires": { |
|||
"atob": "^2.1.2", |
|||
"decode-uri-component": "^0.2.0" |
|||
} |
|||
}, |
|||
"sourcemap-codec": { |
|||
"version": "1.4.8", |
|||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", |
|||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", |
|||
"dev": true |
|||
}, |
|||
"strip-final-newline": { |
|||
"version": "2.0.0", |
|||
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", |
|||
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", |
|||
"dev": true |
|||
}, |
|||
"strip-json-comments": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
|||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" |
|||
}, |
|||
"supports-color": { |
|||
"version": "7.1.0", |
|||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", |
|||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", |
|||
"dev": true, |
|||
"requires": { |
|||
"has-flag": "^4.0.0" |
|||
} |
|||
}, |
|||
"tslib": { |
|||
"version": "2.0.1", |
|||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", |
|||
"integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", |
|||
"dev": true |
|||
}, |
|||
"typescript": { |
|||
"version": "4.4.4", |
|||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", |
|||
"integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", |
|||
"dev": true |
|||
}, |
|||
"universalify": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", |
|||
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", |
|||
"dev": true |
|||
}, |
|||
"which": { |
|||
"version": "2.0.2", |
|||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", |
|||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
|||
"dev": true, |
|||
"requires": { |
|||
"isexe": "^2.0.0" |
|||
} |
|||
}, |
|||
"wrappy": { |
|||
"version": "1.0.2", |
|||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
|||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
|||
"dev": true |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,55 @@ |
|||
{ |
|||
"name": "@noderun/pp", |
|||
"version": "0.0.1", |
|||
"description": "命令行管理模板项目", |
|||
"main": "dist/pp.umd.js", |
|||
"module": "dist/pp.esm.js", |
|||
"typings": "dist/index.d.ts", |
|||
"buildOptions": { |
|||
"filename": "pp", |
|||
"var": "pp", |
|||
"formats": [ |
|||
"cjs" |
|||
] |
|||
}, |
|||
"bin": { |
|||
"pp": "./dist/pp.cjs.js" |
|||
}, |
|||
"scripts": { |
|||
"test": "node src/main.js", |
|||
"build": "cross-env NODE_ENV=production node scripts/build.js", |
|||
"dev": "cross-env NODE_ENV=development node scripts/dev.js" |
|||
}, |
|||
"keywords": [], |
|||
"author": "", |
|||
"license": "ISC", |
|||
"devDependencies": { |
|||
"@rollup/plugin-alias": "^3.1.1", |
|||
"@rollup/plugin-commonjs": "^15.0.0", |
|||
"@rollup/plugin-node-resolve": "^13.0.6", |
|||
"@rollup/plugin-replace": "^2.3.3", |
|||
"@types/ejs": "^3.1.0", |
|||
"@types/fs-extra": "^9.0.13", |
|||
"@types/ini": "^1.3.31", |
|||
"@types/node": "^15.12.5", |
|||
"chalk": "^4.1.2", |
|||
"cross-env": "^7.0.3", |
|||
"dts-bundle": "^0.7.3", |
|||
"execa": "^4.0.3", |
|||
"fs-extra": "^9.0.1", |
|||
"lodash": "^4.17.20", |
|||
"rollup": "^2.26.3", |
|||
"rollup-plugin-sourcemaps": "^0.6.2", |
|||
"rollup-plugin-typescript2": "^0.27.2", |
|||
"tslib": "^2.0.1", |
|||
"typescript": "^4.4.4" |
|||
}, |
|||
"dependencies": { |
|||
"@types/uuid": "^8.3.1", |
|||
"commander": "^8.3.0", |
|||
"download-git-repo": "^3.0.2", |
|||
"ejs": "^3.1.6", |
|||
"ini": "^2.0.0", |
|||
"uuid": "^8.3.2" |
|||
} |
|||
} |
File diff suppressed because it is too large
@ -0,0 +1,113 @@ |
|||
import commonjs from "@rollup/plugin-commonjs"; |
|||
import typescript from "rollup-plugin-typescript2"; |
|||
import alias from "@rollup/plugin-alias"; |
|||
import replace from "@rollup/plugin-replace"; |
|||
import sourcemaps from "rollup-plugin-sourcemaps"; |
|||
import { nodeResolve } from '@rollup/plugin-node-resolve'; |
|||
const pkg = require("./package.json"); |
|||
const path = require("path"); |
|||
|
|||
let isProd = process.env.NODE_ENV === "production"; |
|||
|
|||
const input = "src/index.ts"; |
|||
const openSourceMap = true; |
|||
const buildOptions = pkg.buildOptions; |
|||
buildOptions.formats = process.env.TARGET |
|||
? [process.env.TARGET] |
|||
: buildOptions.formats; |
|||
export default createConfig(); |
|||
|
|||
function createConfig() { |
|||
return { |
|||
input, |
|||
external: [...Object.keys(pkg.dependencies), ...Object.keys(pkg.devDependencies)], |
|||
output: createOutput(buildOptions), |
|||
plugins: createPlugin(), |
|||
}; |
|||
} |
|||
|
|||
function createPlugin() { |
|||
let plugin = []; |
|||
const aliasPlugin = alias({ |
|||
resolve: [".ts"], |
|||
"@": path.resolve(__dirname, "src"), |
|||
}); |
|||
const tsPlugin = typescript({ |
|||
check: isProd, |
|||
tsconfig: path.resolve(__dirname, "tsconfig.json"), |
|||
cacheRoot: path.resolve(__dirname, "node_modules/.rts2_cache"), |
|||
tsconfigOverride: { |
|||
compilerOptions: { |
|||
declaration: isProd, |
|||
}, |
|||
}, |
|||
}); |
|||
const replacePlugin = replace({ |
|||
preventAssignment: true, |
|||
__DEV__: !isProd, |
|||
}); |
|||
plugin = [sourcemaps(),nodeResolve(), commonjs(), tsPlugin, aliasPlugin, replacePlugin]; |
|||
return plugin; |
|||
} |
|||
|
|||
function createOutput(options) { |
|||
const output = []; |
|||
const filterType = { |
|||
//可用script标签导入,会输出一个全局变量
|
|||
iife: { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.iife.js`, |
|||
format: "iife", |
|||
name: options.var, |
|||
}, |
|||
// amd规范,可用require.js加载
|
|||
amd: { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.amd.js`, |
|||
format: "amd", |
|||
}, |
|||
// 兼容 IIFE, AMD, CJS 三种模块规范
|
|||
umd: { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.umd.js`, |
|||
format: "umd", |
|||
name: options.var, |
|||
}, |
|||
// CommonJS规范
|
|||
cjs: { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.cjs.js`, |
|||
format: "cjs", |
|||
exports: "auto", |
|||
banner: "#!/usr/bin/env node" // 提供命令行的可执行权限
|
|||
}, |
|||
// ES2015 Module 规范, 可用 `Webpack`, `Rollup` 加载
|
|||
esm: { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.esm.js`, |
|||
format: "es", |
|||
}, |
|||
"esm-browser": { |
|||
sourcemap: openSourceMap, |
|||
file: `dist/${options.filename}.esm-browser.js`, |
|||
format: "es", |
|||
}, |
|||
}; |
|||
if (options.formats) { |
|||
options.formats.forEach((format) => { |
|||
if (filterType[format]) { |
|||
output.push(filterType[format]); |
|||
} else { |
|||
console.error("无效类型:" + format); |
|||
} |
|||
}); |
|||
} else { |
|||
for (const key in filterType) { |
|||
if (filterType.hasOwnProperty(key)) { |
|||
const element = filterType[key]; |
|||
output.push(element); |
|||
} |
|||
} |
|||
} |
|||
return output; |
|||
} |
@ -0,0 +1,24 @@ |
|||
const execa = require("execa"); |
|||
const fs = require("fs-extra"); |
|||
const chalk = require('chalk'); |
|||
const dts = require("dts-bundle"); |
|||
const pkg = require("../package.json"); |
|||
|
|||
(async function () { |
|||
console.log(chalk.red("正在清理dist文件夹")); |
|||
await fs.remove(`dist`); |
|||
console.log(chalk.red("清理完成,开始构建")); |
|||
await execa("rollup", ["-c", "--environment", `NODE_ENV:production`], { |
|||
stdio: "inherit", |
|||
}); |
|||
console.log(chalk.red("构建完成,开始生成d.ts")); |
|||
const dtsOptions = { |
|||
name: pkg.name, |
|||
main: `dist/src/index.d.ts`, |
|||
out: `../index.d.ts`, |
|||
}; |
|||
dts.bundle(dtsOptions); |
|||
console.log(chalk.red("生成完毕,开始清理残余")); |
|||
await fs.remove(`dist/src`); |
|||
console.log('所有文件清理完成'); |
|||
})(); |
@ -0,0 +1,7 @@ |
|||
const execa = require("execa"); |
|||
const chalk = require('chalk'); |
|||
|
|||
console.log(chalk.red("开始监听,格式:umd")); |
|||
execa("rollup", ["-wc", "--environment", `NODE_ENV:development,TARGET:cjs`], { |
|||
stdio: "inherit", |
|||
}); |
@ -0,0 +1,8 @@ |
|||
import path from "path"; |
|||
import os from "os"; |
|||
|
|||
export default { |
|||
//数据目录
|
|||
dir: path.join(os.homedir(), '.pp'), |
|||
configPath: path.join(os.homedir(), '.pp','.pprc') |
|||
} |
@ -0,0 +1,102 @@ |
|||
import fs from "fs-extra"; |
|||
import chalk from "chalk"; |
|||
import uuid from "uuid"; |
|||
import path from "path"; |
|||
import os from "os"; |
|||
import config from "@/config"; |
|||
import download from "download-git-repo"; |
|||
import writefile, { isExist } from "./writefile"; |
|||
import { readFile, readIniFile, writeIniFile } from "./util"; |
|||
|
|||
/** |
|||
* 确保配置文件存在 |
|||
*/ |
|||
try { |
|||
fs.ensureDirSync(config.dir); |
|||
fs.ensureFileSync(config.configPath); |
|||
} catch (e) { |
|||
throw e; |
|||
} |
|||
/** |
|||
* 读取配置 |
|||
*/ |
|||
const Opts = readIniFile(config.configPath); |
|||
|
|||
/** |
|||
* 显示保存的列表 |
|||
* @param opt 参数: all:是否显示Git地址 |
|||
*/ |
|||
export function onList(opt?: { all?: boolean }) { |
|||
if (!Opts.list || !Object.keys(Opts.list).length) { |
|||
console.log("暂无模板列表,请自行体添加"); |
|||
return; |
|||
} |
|||
Object.keys(Opts.list).forEach((key) => { |
|||
let value = Opts.list[key]; |
|||
if (opt?.all) { |
|||
console.log( |
|||
value.name + (value.desc ? `(${value.desc})` : "") + `: ${value.url}` |
|||
); |
|||
} else { |
|||
console.log(value.name + (value.desc ? `(${value.desc})` : "")); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
export function onClone(name: string, opts: { dir: string }) { |
|||
if (!Opts.list || !Opts.list[name]) { |
|||
console.log("请先添加项目"); |
|||
return; |
|||
} |
|||
let data = Opts.list[name]; |
|||
let tempPath = path.join(os.tmpdir(), "pp-" + uuid.v4()); |
|||
let to = opts.dir; |
|||
let git_url = "direct:" + data.url; |
|||
if (isExist(to)) { |
|||
console.log( |
|||
chalk.red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹") |
|||
); |
|||
return; |
|||
} |
|||
download(git_url, tempPath, { clone: true }, function (err: Error) { |
|||
if (err) throw err; |
|||
writefile(tempPath, to, { name: "哈哈" }); |
|||
fs.removeSync(tempPath); |
|||
console.log(chalk.green("克隆成功")); |
|||
console.log(`\ncd ${to}\n`); |
|||
}); |
|||
} |
|||
|
|||
export function onRemove(name: string) { |
|||
let result = Object.assign({}, Opts); |
|||
if (result.list && result.list[name]) { |
|||
delete result.list[name]; |
|||
writeIniFile(config.configPath, result); |
|||
console.log(chalk.green("删除成功")); |
|||
} else { |
|||
console.error(chalk.red("不存在该模板")); |
|||
} |
|||
} |
|||
|
|||
export function onAdd(url: string, opt: { name: string; desc?: string }) { |
|||
const result = Object.assign({}, Opts); |
|||
const http = /^(http|https)\:\/\//g; |
|||
const git = /(git|root)\@/g; |
|||
if (!git.test(url) && !http.test(url)) { |
|||
console.error(chalk.red("请添加正确的Git仓库地址")); |
|||
return; |
|||
} |
|||
if (!result.list) result.list = {}; |
|||
if (result.list[opt.name]) { |
|||
console.error(chalk.red("名字重复,当前存在:")); |
|||
onList(); |
|||
return; |
|||
} |
|||
result.list[opt.name] = { ...opt, url }; |
|||
writeIniFile(config.configPath, result); |
|||
console.log(chalk.green("添加成功")); |
|||
} |
|||
|
|||
export function onCheck() { |
|||
console.log(readFile(config.configPath)); |
|||
} |
@ -0,0 +1,31 @@ |
|||
import { Command } from "commander"; |
|||
import * as func from "./func"; |
|||
// import os from "os"
|
|||
|
|||
// console.log(os.tmpdir());
|
|||
|
|||
const program = new Command(); |
|||
program.version("0.0.1", "-v, --version").description("查看当前版本号"); |
|||
program.helpOption("-h --help", "显示帮助信息"); |
|||
program.showHelpAfterError("( pp -h 查看帮助信息)"); |
|||
|
|||
program.command("list").option('-a --all').description("查看所有模板列表").action(func.onList); |
|||
|
|||
program.command("check").description("查看配置文件").action(func.onCheck); |
|||
|
|||
program |
|||
.command("add <url>") |
|||
.requiredOption("-n --name <name>", "模板名字") |
|||
.option("-d --desc <desc>", "模板具体描述") |
|||
.option("-t --tag <tag>", "模板标签") |
|||
.description("添加一个模板仓库") |
|||
.action(func.onAdd); |
|||
|
|||
program |
|||
.command("rm <name>") |
|||
.description("删除一个模板仓库") |
|||
.action(func.onRemove); |
|||
|
|||
program.command("clone <name>").requiredOption("-d --dir <dir>", "目标路径").description("克隆模板仓库").action(func.onClone); |
|||
|
|||
program.parse(process.argv); |
@ -0,0 +1,13 @@ |
|||
import ini, {EncodeOptions } from "ini" |
|||
import fs from "fs-extra" |
|||
|
|||
export function readFile(path:string, encoding: BufferEncoding="utf-8") { |
|||
return fs.readFileSync(path, encoding) |
|||
} |
|||
export function readIniFile(path:string, encoding: BufferEncoding="utf-8") { |
|||
return ini.parse(fs.readFileSync(path, encoding)) |
|||
} |
|||
|
|||
export function writeIniFile(path:string, data: Object) { |
|||
fs.writeFileSync(path, ini.stringify(data)) |
|||
} |
@ -0,0 +1,57 @@ |
|||
import fs from "fs-extra"; |
|||
import ejs from "ejs"; |
|||
import chalk from "chalk"; |
|||
import path from "path"; |
|||
import execa from "execa"; |
|||
|
|||
function walkDir (dir: string, cb?: (file: string)=>void) { |
|||
function _walk (_dir = '.') { |
|||
const statInfo = fs.statSync(dir + path.sep + _dir) |
|||
if (statInfo.isDirectory()) { |
|||
const paths = fs.readdirSync(path.resolve(dir + path.sep + _dir)) |
|||
for (let i = 0; i < paths.length; i++) { |
|||
_walk(_dir + path.sep + paths[i]) |
|||
} |
|||
} else if (statInfo.isFile()) { |
|||
cb && cb(_dir) |
|||
} |
|||
return true |
|||
} |
|||
return _walk() |
|||
} |
|||
|
|||
export function isExist (file: string) { |
|||
let result = false |
|||
try { |
|||
fs.accessSync(file, fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK); |
|||
result = true // 文件可读写
|
|||
} catch (err) { |
|||
result = false |
|||
} |
|||
return result |
|||
} |
|||
|
|||
export default function writefile (fromDir: string, toDir: string, opts = {}, force = false) { |
|||
if (!fromDir) { |
|||
console.log(chalk.red("缺少模板目录")) |
|||
return |
|||
} |
|||
if (!toDir) { |
|||
console.log(chalk.red("缺少目标目录")) |
|||
return |
|||
} |
|||
if (isExist(toDir) && !force) { |
|||
console.log(chalk.red("安全起见,不覆写已存在的目录")) |
|||
return |
|||
} |
|||
walkDir(fromDir, function (file) { |
|||
let fromRes = path.resolve(fromDir, file) |
|||
let toRes = path.resolve(toDir, file) |
|||
fs.ensureFileSync(toRes) |
|||
const originRoot = fs.readFileSync(fromRes, { |
|||
encoding: "utf8", |
|||
}); |
|||
const html = ejs.render(originRoot, opts); |
|||
fs.writeFileSync(toRes, html); |
|||
}) |
|||
} |
@ -0,0 +1 @@ |
|||
asdad <%= name %> |
@ -0,0 +1 @@ |
|||
asdad <%= name %> |
@ -0,0 +1,35 @@ |
|||
{ |
|||
"compilerOptions": { |
|||
"strict": true, |
|||
"target": "ES5", |
|||
"esModuleInterop": true, // 使得导入的方式类似于es6的模式 |
|||
"module":"ESNext", // 编译后输出的模块类型,UMD不支持rollup打包 |
|||
"lib": [ |
|||
"esnext" |
|||
], |
|||
"removeComments": true, |
|||
"noImplicitAny": true, |
|||
"strictNullChecks": true, |
|||
"strictFunctionTypes": true, |
|||
"strictBindCallApply": true, |
|||
"strictPropertyInitialization": true, |
|||
// 不报告执行不到的代码错误。 |
|||
"allowUnreachableCode": true, |
|||
"noImplicitThis": true, |
|||
"alwaysStrict": true, |
|||
"noUnusedLocals": false, // 用于检查是否有定义了但是没有使用变量 |
|||
"noUnusedParameters": false, // 用于检测是否在函数中没有使用的参数 |
|||
"noImplicitReturns": true, // 用于检查函数是否有返回值 |
|||
"allowSyntheticDefaultImports": true, |
|||
"resolveJsonModule": true, |
|||
"noFallthroughCasesInSwitch": true, // 用于检查switch中是否有case没有使用break跳出switch |
|||
"moduleResolution": "node", |
|||
"baseUrl": ".", // 用于设置解析非相对模块名称的基本目录 |
|||
"rootDir": ".", // 来指定编译文件的根目录,编译器会在根目录查找入口文件 |
|||
"paths": { // 用于设置模块名到基于baseUrl的路径映射 |
|||
"@/*": ["src/*"] |
|||
} |
|||
}, |
|||
"include": ["src/**.ts", "types/global.d.ts"], |
|||
"exclude": ["node_modules"] |
|||
} |
@ -0,0 +1,21 @@ |
|||
// 全局替换
|
|||
declare var __DEV__: boolean; |
|||
|
|||
interface IItem{ |
|||
name: string; // 模板名称
|
|||
desc: string; // 具体干什么用的
|
|||
url: string; //Git仓库地址
|
|||
} |
|||
|
|||
type IOpts = { |
|||
list?: [ |
|||
IItem |
|||
] |
|||
} |
|||
|
|||
|
|||
declare module "download-git-repo"{ |
|||
type download = (url: string, path: string, config: {clone: boolean}, cb: (err:Error)=>void)=>void |
|||
const func: download; |
|||
export default func; |
|||
} |
Loading…
Reference in new issue