UNPKG

jarvis-react

Version:

React脚手架及命令行工具合集

69 lines (68 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.babelTransform = exports.getBabelConfig = void 0; const core_1 = require("@babel/core"); function getBabelConfig(options) { const { mode = 'app', buildType = 'esm', isDevelopment, isProduction } = options; const config = { babelrc: false, configFile: false, sourceType: 'unambiguous', presets: [ [ require.resolve('@babel/preset-env'), { modules: buildType === 'esm' ? false : 'auto', }, ], [ require.resolve('@babel/preset-react'), { runtime: 'automatic', }, ], require.resolve('@babel/preset-typescript'), ], plugins: [require.resolve('@babel/plugin-transform-runtime')], }; if (mode === 'component') { // 打包组件时需要转换引入的文件 less → css config.plugins.push([ { name: 'rename-less', visitor: { ImportDeclaration: (path) => { if (path.node.source.value.endsWith('.less')) { path.node.source.value = path.node.source.value.replace(/\.less$/, '.css'); } }, }, }, ]); } else { if (isProduction) { config.compact = true; } config.plugins.push([ require.resolve('babel-plugin-import'), { libraryName: 'antd', libraryDirectory: 'es', style: true, }, ]); } if (isDevelopment) { config.plugins.push(require.resolve('react-refresh/babel')); } return config; } exports.getBabelConfig = getBabelConfig; function babelTransform(config, file) { return (core_1.transform(file.contents, { ...config, filename: file.path, })?.code || ''); } exports.babelTransform = babelTransform;