unbag
Version:
一个专门用来开发npm工具的包
102 lines (101 loc) • 3.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defineUserConfig = exports.deepFreezeConfig = void 0;
exports.loadUserConfigFromFile = loadUserConfigFromFile;
exports.useDefaultConfig = exports.resolveUserConfig = exports.mergeDefaultConfig = exports.mergeConfig = void 0;
var _index = require("../commands/parallel/index.cjs");
var _index2 = require("../commands/transform/index.cjs");
var _fs = require("./fs.cjs");
var _path = require("../utils/path.cjs");
var _bundleRequire = require("bundle-require");
var _index3 = require("../commands/release/index.cjs");
var _common = require("./common.cjs");
var _index4 = require("./message/index.cjs");
var _log = require("./log.cjs");
var _deepFreezeStrict = _interopRequireDefault(require("deep-freeze-strict"));
var _lodash = _interopRequireDefault(require("lodash"));
var _config = require("./../commands/commit/config.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const useDefaultConfig = () => {
const defaultConfig = {
root: process.cwd(),
locale: _common.Locale.zh_cn,
tempDir: "./node_modules/.unbag",
log: _log.LogConfigDefault,
transform: _index2.TransformConfigDefault,
parallel: _index.ParallelDefaultConfig,
release: _index3.releaseDefaultConfig,
commit: _config.CommitConfigDefault,
catch: () => {}
};
return defaultConfig;
};
exports.useDefaultConfig = useDefaultConfig;
const defineUserConfig = config => config;
exports.defineUserConfig = defineUserConfig;
const resolveUserConfig = async options => {
const {
filePath,
root,
locale
} = options;
const fs = (0, _fs.useFs)();
const path = (0, _path.usePath)();
const message = (0, _index4.useMessage)({
locale
});
if (filePath) {
const absoluteFilePath = path.resolve(root.content, filePath);
const isExit = await fs.pathExists(absoluteFilePath);
if (!isExit) {
throw new Error(message.config.file.notFound(absoluteFilePath));
}
return await loadUserConfigFromFile(new _path.AbsolutePath({
content: absoluteFilePath
}));
} else {
const configFileDefaultList = ["unbag.config.ts", "unbag.config.js", "unbag.config.cjs", "unbag.config.mjs"];
for (const filePath2 of configFileDefaultList) {
const absoluteFilePath = path.resolve(root.content, filePath2);
const isExit = await fs.pathExists(absoluteFilePath);
if (!isExit) {
break;
}
return await loadUserConfigFromFile(new _path.AbsolutePath({
content: absoluteFilePath
}));
}
}
};
exports.resolveUserConfig = resolveUserConfig;
async function loadUserConfigFromFile(absoluteFilePath) {
const {
mod
} = await (0, _bundleRequire.bundleRequire)({
filepath: absoluteFilePath.content,
format: "esm"
});
const config = mod.default || mod;
config.configFileResolvedPath = absoluteFilePath;
return config;
}
const mergeDefaultConfig = userConfig => {
const defaultConfig = useDefaultConfig();
return mergeConfig(defaultConfig, userConfig || {});
};
exports.mergeDefaultConfig = mergeDefaultConfig;
const mergeConfig = (defaults, overrides) => {
const customize = (objValue, srcValue) => {
if (_lodash.default.isArray(objValue) || _lodash.default.isArray(srcValue)) {
return (0, _common.filterNullable)([...(0, _common.arraify)(objValue), ...(0, _common.arraify)(srcValue)]);
}
};
return _lodash.default.mergeWith({}, defaults, overrides, customize);
};
exports.mergeConfig = mergeConfig;
const deepFreezeConfig = userConfig => {
return (0, _deepFreezeStrict.default)(userConfig);
};
exports.deepFreezeConfig = deepFreezeConfig;