@zougt/vite-plugin-theme-preprocessor
Version:
css theme preprocessor plugin for vite
58 lines (57 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.resetStylePreprocessor = resetStylePreprocessor;
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 复原源处理器包的位置
* @param {*} { langs: ['scss','less'] }
* @returns
*/
function resetStylePreprocessor(options = {}) {
if (!Array.isArray(options.langs) || !options.langs.length) {
return Promise.resolve();
}
options.langs.forEach(lang => {
const langName = lang === "scss" ? "sass" : lang;
let isSubstitute = false;
let resolveDir = "";
let resolveName = "";
try {
const resolved = require.resolve(langName).replace(/\\/g, "/");
const pathnames = resolved.split("/");
const index = pathnames.findIndex(str => new RegExp(`^_${langName}@`).test(str) || str === langName);
resolveName = pathnames[index];
resolveDir = `${pathnames.slice(0, index).join("/")}/${resolveName}`;
isSubstitute = _fsExtra.default.existsSync(`${resolveDir}/preprocessor-substitute-options.js`);
// eslint-disable-next-line no-empty
} catch (e) {}
if (isSubstitute) {
// 替换处理器
if (_fsExtra.default.existsSync(resolveDir)) {
const preprocessorFiles = _fsExtra.default.readdirSync(resolveDir) || [];
preprocessorFiles.forEach(name => {
if (name !== "node_modules" && name !== "bin") {
_fsExtra.default.removeSync(`${resolveDir}/${name}`);
}
});
}
const originalPreDir = _path.default.resolve("node_modules/.zougtTheme/original", resolveName).replace(/\\/g, "/");
if (_fsExtra.default.existsSync(originalPreDir)) {
const originalFiles = _fsExtra.default.readdirSync(originalPreDir) || [];
originalFiles.forEach(name => {
if (name !== "node_modules" && name !== "bin") {
_fsExtra.default.copySync(`${originalPreDir}/${name}`, `${resolveDir}/${name}`);
}
});
}
}
});
return Promise.resolve();
}
var _default = resetStylePreprocessor;
exports.default = _default;