UNPKG

unbag

Version:

一个专门用来开发npm工具的包

141 lines (140 loc) 3.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.watch = exports.transform = exports.TransformTaskOutFileType = exports.TransformConfigDefault = exports.TransformCommand = void 0; var _chokidar = require("chokidar"); var _debouncePromise = _interopRequireDefault(require("debounce-promise")); var _log = require("./../../utils/log.cjs"); var _index = require("./../../utils/message/index.cjs"); var _fs = require("./../../utils/fs.cjs"); var _utils = require("./utils.cjs"); var _index2 = require("./action/index.cjs"); var _command = require("./../../core/command.cjs"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var TransformTaskOutFileType = exports.TransformTaskOutFileType = /* @__PURE__ */(TransformTaskOutFileType2 => { TransformTaskOutFileType2["Transformed"] = "Transformed"; TransformTaskOutFileType2["Copy"] = "Copy"; TransformTaskOutFileType2["Ignored"] = "Ignored"; return TransformTaskOutFileType2; })(TransformTaskOutFileType || {}); const TransformConfigDefault = exports.TransformConfigDefault = { entry: "./src", watch: false, sourcemap: false, ignores: { ".DS_Store": true }, actions: {}, action: async ({ finalUserConfig }) => { const message = (0, _index.useMessage)({ locale: finalUserConfig.locale }); throw new Error(message.transform.action.empty()); }, match: async ({ filePath, finalUserConfig }) => { const { transform: { ignores } } = finalUserConfig; const ignoresExtnames = Object.entries(ignores).filter(([, ignore]) => ignore).map(([extname]) => extname); const needIgnore = ignoresExtnames.some(extName => filePath.content.endsWith(extName)); if (needIgnore) { return false; } return true; } }; const innerTransform = async params => { const { finalUserConfig } = params; const log = (0, _log.useLog)({ finalUserConfig }); const fs = (0, _fs.useFs)(); const message = (0, _index.useMessage)({ locale: finalUserConfig.locale }); log.info(message.transform.starting()); const { transform: transform2 } = finalUserConfig; const { action } = transform2; const transformTempDir = (0, _utils.useTransformTempDir)({ finalUserConfig }); const actionHelper = (0, _index2.useTransformActionHelper)({ finalUserConfig }); await fs.emptyDir(transformTempDir.content); await action({ helper: actionHelper, finalUserConfig }); log.info(message.transform.end()); }; const watch = async params => { const { finalUserConfig } = params; const entryDir = (0, _utils.useTransformEntry)({ finalUserConfig }); const log = (0, _log.useLog)({ finalUserConfig }); const message = (0, _index.useMessage)({ locale: finalUserConfig.locale }); const watcher = (0, _chokidar.watch)(entryDir.content); const debouncedTransform = (0, _debouncePromise.default)(async () => { await innerTransform({ finalUserConfig }); }, 100); await debouncedTransform(); watcher.on("all", async (type, file) => { log.info(message.transform.watch.fileChanged({ type, filePath: file })); await debouncedTransform(); }); log.info(message.transform.watch.enabled()); }; exports.watch = watch; const transform = async params => { const { finalUserConfig } = params; if (finalUserConfig.transform.watch) { await watch({ finalUserConfig }); } else { return await innerTransform({ finalUserConfig }); } }; exports.transform = transform; class TransformCommand extends _command.Command { async task() { const { finalUserConfig } = this; await transform({ finalUserConfig }); } } exports.TransformCommand = TransformCommand;