UNPKG

@nuofe/ndk-lint-tool

Version:
163 lines (116 loc) 4.34 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ndkLogger = _interopRequireDefault(require("@nuofe/ndk-logger")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _inquirer = _interopRequireDefault(require("inquirer")); var _path = _interopRequireDefault(require("path")); const { prompt, Separator } = _inquirer.default; const debug = _ndkLogger.default.debug('ndk-lint-tool:ignore:init'); const iconfontContent = '**/iconfont.js'; const iconfontReg = /iconfont\.js$/; var _default = async options => { const { config, cwd, spinner } = options; const { type } = config; const eslintIgnoreFile = '.eslintignore'; const eslintIgnorePath = _path.default.resolve(cwd, eslintIgnoreFile); const prettierIgnoreFile = '.prettierignore'; const prettierIgnorePath = _path.default.resolve(cwd, prettierIgnoreFile); const defaultItems = ['**/node_modules/']; let defaultReg; let ignoreContent; if (['app', 'web'].includes(type)) { defaultItems.push(iconfontContent, '/dist/'); defaultReg = iconfontReg; } else if (['component', 'library'].includes(type)) { defaultItems.push('/es/'); } else if (type === 'tool') { defaultItems.push('**/lib/'); } ignoreContent = `${defaultItems.sort().join('\n')}\n`; if (_fsExtra.default.existsSync(eslintIgnorePath)) { const fileContent = _fsExtra.default.readFileSync(eslintIgnorePath, 'utf8'); const ignoreItems = fileContent.trim().split(/\r|\n/).filter(item => !!(item && item.trim())); const allowableItems = ignoreItems.filter(item => defaultReg && defaultReg.test(item) || defaultItems.includes(item)); let modified = false; if (ignoreItems.length > 0) { if (ignoreItems.length !== allowableItems.length) { spinner.stop(); _ndkLogger.default.logTip('Ignore Content:'); _ndkLogger.default.logText(fileContent); _ndkLogger.default.logHint('> Update Ignore...'); const choices = ignoreItems.map(item => { return { name: item, value: item }; }); const { value } = await prompt({ type: 'checkbox', name: 'value', message: '请选择要保留的内容', choices: choices.concat(new Separator()), default: allowableItems }); defaultItems.push(...value); modified = true; } else { defaultItems.push(...ignoreItems); } defaultItems.map(item => iconfontReg.test(item) ? iconfontContent : item).sort(); } ignoreContent = `${Array.from(new Set(defaultItems)).join('\n')}\n`; if (ignoreContent !== fileContent) { debug('write %s', eslintIgnorePath); _fsExtra.default.writeFileSync(eslintIgnorePath, ignoreContent, 'utf8'); spinner.succeed(`更新 ${eslintIgnoreFile} 文件。`); _ndkLogger.default.logEmpty(); spinner.start(); } else if (modified) { spinner.succeed('全部保留。'); _ndkLogger.default.logEmpty(); spinner.start(); } else { debug('%s is ok.', eslintIgnoreFile); } } else { debug('write %s', eslintIgnorePath); _fsExtra.default.writeFileSync(eslintIgnorePath, ignoreContent, 'utf8'); spinner.succeed(`新建 ${eslintIgnoreFile} 文件。`); _ndkLogger.default.logEmpty(); spinner.start(); } if (_fsExtra.default.existsSync(prettierIgnorePath)) { const fileContent = _fsExtra.default.readFileSync(prettierIgnorePath, 'utf8'); if (ignoreContent !== fileContent) { debug('write %s', prettierIgnorePath); _fsExtra.default.writeFileSync(prettierIgnorePath, ignoreContent, 'utf8'); spinner.succeed(`更新 ${prettierIgnoreFile} 文件。`); _ndkLogger.default.logEmpty(); spinner.start(); } else { debug('%s is ok.', prettierIgnoreFile); } } else { debug('write %s', prettierIgnorePath); _fsExtra.default.writeFileSync(prettierIgnorePath, ignoreContent, 'utf8'); spinner.succeed(`新建 ${prettierIgnoreFile} 文件。`); _ndkLogger.default.logEmpty(); spinner.start(); } }; exports.default = _default;