UNPKG

codess

Version:

vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。

105 lines (104 loc) 3.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.saveDefSnippets = saveDefSnippets; exports.clearSnippets = clearSnippets; exports.saveSnippetsConfig = saveSnippetsConfig; exports.getSnippetsSaveName = getSnippetsSaveName; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const packageJSON_1 = require("./config/packageJSON"); const seting_1 = require("./seting"); const fs_2 = require("./utils/fs"); const snippet_1 = require("./snippet"); function saveDefSnippets() { let items = [ { prefix: packageJSON_1.packageJSON.name, type: 'group', body: '', children: [ { type: 'snippet', prefix: 'separate', body: ['## ${1:prefix}', '${2:description}', '```${3:language}', '', '```'].join('\n'), description: 'snippet template', }, ], }, { type: 'snippet', prefix: packageJSON_1.packageJSON.name, body: [ `\${0:Welcome to use${packageJSON_1.packageJSON.name}`, packageJSON_1.packageJSON.description, `Official website: ${seting_1.seting.officialWebsite}}`, ].join('\n'), description: packageJSON_1.packageJSON.description, }, ]; saveSnippetsConfig(JSON.stringify((0, snippet_1.toSnippetConfig)(items), undefined, 4), packageJSON_1.packageJSON.name); } function clearSnippets(packageIgnores = []) { var _a; let fileIgnores = [ ...packageIgnores, { type: '', package: packageJSON_1.packageJSON.name, }, ].map((_) => { return getSnippetsSaveName(_.package, _.type); }); let vscodePath = path_1.default.join(process.cwd(), './.vscode/'); if ((_a = (0, fs_2.statSync)(vscodePath)) === null || _a === void 0 ? void 0 : _a.isDirectory()) { fs_1.default.readdirSync(vscodePath).forEach((i) => { var _a; if (new RegExp(`\\.${packageJSON_1.packageJSON.name}\\.code-snippets`).test(i) && !fileIgnores.includes(i) && ((_a = (0, fs_2.statSync)(path_1.default.join(vscodePath, i))) === null || _a === void 0 ? void 0 : _a.isFile())) { (0, fs_2.rmSync)(path_1.default.join(vscodePath, i)); } }); } } function saveSnippetsConfig(str, packageName, type) { let vscodePath = path_1.default.join(process.cwd(), './.vscode/'); try { fs_1.default.mkdirSync(vscodePath); } catch (_a) { } let _path = path_1.default.join(vscodePath, getSnippetsSaveName(packageName, type)); if (str) { fs_1.default.writeFileSync(_path, [ `// ${packageName}`, `// Generated by ${packageJSON_1.packageJSON.name},Please do not modify it`, `// ${packageJSON_1.packageJSON.name} Official website: ${seting_1.seting.officialWebsite}`, str, ].join('\n')); } else { try { (0, fs_2.rmSync)(_path); } catch (_b) { } } } function getSnippetsSaveName(packageName, type) { let str = ''; switch (type) { case 'file': str = encodeURIComponent(packageName); break; case 'web': str = packageName; break; case 'github': str = encodeURIComponent(packageName); break; } return `${str ? str + '.' : ''}${packageJSON_1.packageJSON.name}.code-snippets`; }