unbag
Version:
一个专门用来开发npm工具的包
141 lines (140 loc) • 3.83 kB
JavaScript
;
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;