@refly/arco-vite-plugin-react
Version:
For Vite build, load Arco Design styles on demand
80 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const less_1 = require("./less");
const icon_1 = require("./icon");
const transform_1 = require("./transform");
const pkg = require('../../package.json');
function vitePluginArcoImport(options = {}) {
const { theme = '', iconBox = '', modifyVars = {}, style = true, varsInjectScope = [] } = options;
let iconBoxLib;
let resolvedConfig;
let isDevelopment = false;
if (iconBox) {
try {
iconBoxLib = require(iconBox); // eslint-disable-line
}
catch (e) {
throw new Error(`IconBox ${iconBox} not existed`);
}
}
return {
name: pkg.name,
config(config, { command }) {
// dev mode
isDevelopment = command === 'serve';
// css preprocessorOptions
(0, less_1.modifyCssConfig)(pkg.name, config, theme, modifyVars, varsInjectScope);
// iconbox
(0, icon_1.modifyIconConfig)(config, iconBox, iconBoxLib);
},
async load(id) {
const res = (0, icon_1.loadIcon)(id, iconBox, iconBoxLib);
if (res !== undefined) {
return res;
}
// other ids should be handled as usually
return null;
},
configResolved(config) {
resolvedConfig = config;
// console.log('viteConfig', resolvedConfig)
},
transform(code, id) {
let shouldTransform = false;
for (const pattern of options.filePatterns) {
if (id.match(pattern)) {
shouldTransform = true;
}
}
// Do not transform packages in this monorepo!
if (!shouldTransform) {
return (0, transform_1.emptyTransformJsFiles)({
id,
code,
isDevelopment,
sourceMaps: options.sourceMaps || isDevelopment || Boolean(resolvedConfig?.build?.sourcemap),
});
}
// transform css files
const res = (0, transform_1.transformCssFile)({
code,
id,
theme,
});
if (res !== undefined) {
return res;
}
// css lazy load
return (0, transform_1.transformJsFiles)({
code,
id,
theme,
style,
isDevelopment,
sourceMaps: options.sourceMaps || isDevelopment || Boolean(resolvedConfig?.build?.sourcemap),
});
},
};
}
exports.default = vitePluginArcoImport;
//# sourceMappingURL=index.js.map