packages/preset-official/src/index.ts (171 lines of code) (raw):

import { getWindConfig, getEnv } from '@alicloud/console-toolkit-shared-utils'; import { BreezrPresetConfig } from './type'; import { resolve } from 'path'; /** * 获取场景,pc 或 mobile */ function getScene(config: BreezrPresetConfig) { if (config.mobile === true) return 'mobile'; return 'pc'; } export default (config: BreezrPresetConfig, args: any) => { const windConfig = getWindConfig(process.cwd()); const env = getEnv(); const { webpack: userWebpack, webpack5 } = config; const plugins = []; // dev 模式下,强制开启 babel if (env.isDev() && config.useTypescript || config.typescript) { config.typescript = { ...config.typescript, useBabel: true, } } // 禁用 react-hot-reload config.disableReactHotLoader = true; // 开启 react-refresh config.reactRefresh = true; if (!config.disableUpdator) { plugins.push([ '@alicloud/console-toolkit-plugin-updator', { packagePath: resolve(__dirname, '../package.json'), autoUpdate: false } ]); } const { useTypescript, typescript, useSass, output } = config; const publicPath = args.outputPublicPath || config.outputPublicPath; plugins.push(...[ [ '@alicloud/console-toolkit-plugin-builtin', { webpack5 } ], [ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5-react' : '@alicloud/console-toolkit-plugin-react', { ...config, port: args.port || config.port || 3333, host: args.host || config.host || 'localhost', analyze: args.analyze || config.analyze || false, output: { ...output, publicPath }, } ], [ '@alicloud/console-toolkit-plugin-long-term-caching', { longTermCaching: config.experiment && config.experiment.longTermCaching, version: env.gitBranch ? env.gitBranch.split('/')[1] : null } ], [ '@alicloud/console-toolkit-plugin-styled-components-isolation', { ...config, } ], [ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5' : '@alicloud/console-toolkit-plugin-webpack', { webpack: (...args: any[]) => { if (userWebpack) { return userWebpack(args[0], config, args[1]); } return args[0]; }, disableHmr: config.disableHmr } ] ]); if (!publicPath) { plugins.push( [ '@alicloud/console-toolkit-plugin-cdn', { publishType: args.publishType } ] ); } //@ts-ignore if (config.mocks || windConfig.mocks) { plugins.push([ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5-mocks' : '@alicloud/console-toolkit-plugin-mocks', { //@ts-ignore ...windConfig.mocks, ...config.mocks } ]); } // 浏览器兼容性提示 if (config.browserCompatibility) { plugins.push('@alicloud/console-toolkit-plugin-browser-hint'); } if (config.oneConsole) { plugins.push([ '@alicloud/console-toolkit-plugin-oneconsole', { ...config, scene: getScene(config) }]); } if (config.armsId || config.aemId) { plugins.push([ '@alicloud/console-toolkit-plugin-arms', { armsId: config.armsId, oneConsole: config.oneConsole, aemId: config.aemId, }]); } if (useTypescript || typescript) { plugins.push([ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5-typescript' : '@alicloud/console-toolkit-plugin-typescript', { ...config, } ]); } if (useSass) { plugins.push([ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5-sass' : '@alicloud/console-toolkit-plugin-sass', { ...config } ]); } if (config.dll) { plugins.push(['@alicloud/console-toolkit-plugin-dll', { ...config.dll }]); } plugins.push( [ '@alicloud/console-toolkit-plugin-unit-jest', { babelOptions: { presets: [ require.resolve('babel-preset-breezr-wind'), ], plugins:[] } } ]); if (config.ssr) { plugins.push( [ webpack5 ? '@alicloud/console-toolkit-plugin-webpack5-ssr' : '@alicloud/console-toolkit-plugin-ssr', { ...config.ssr, webpack: (...args: any[]) => { if (config?.ssr?.webpack) { return config.ssr.webpack(args[0], config, args[1]); } return args[0]; }, } ]); } return { plugins, }; }; export { BreezrPresetConfig } from './type'; export const extendConfiguration = (config: BreezrPresetConfig) => { return { presets: [ ['@alicloud/console-toolkit-preset-official', config] ], plugins: config.plugins, }; };