@aliretail/vite-config-xixi
Version:
瓴羊客服vite配置脚手架
73 lines (72 loc) • 2.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.defineConfig = void 0;
const path = require("path");
const _ = require("lodash");
const vite_1 = require("vite");
const util_1 = require("./util");
const util_2 = require("./util");
function defineConfig(config) {
return (0, util_1.tapConfig)(config ?? {}, async (userConfig, { command, mode }) => {
Object.assign(process.env, (0, vite_1.loadEnv)(mode, userConfig.root || process.cwd(), ''));
const pkg = await (0, util_2.readPackage)();
const commonConfig = (0, util_1.mergeConfig)({
build: {
minify: 'terser',
terserOptions: {
keep_classnames: true,
},
},
esbuild: userConfig?.esbuild ?? {
keepNames: true,
jsxFactory: '_React.createElement',
jsxFragment: '_React.Fragment',
jsxInject: `import * as _React from 'react'`,
},
optimizeDeps: {
esbuildOptions: {
keepNames: true,
},
},
resolve: {
alias: [
{
find: /^~(.*)/,
replacement: `${path.join(process.cwd(), 'node_modules')}/$1`,
},
{
find: /^@\/(.*)/,
replacement: `${path.join(process.cwd(), 'src')}/$1`,
},
],
mainFields: ['browser', 'module', 'jsnext:main', 'jsnext', 'main'],
},
css: {
modules: {
localsConvention: 'camelCaseOnly',
generateScopedName(name, filename) {
return [
(0, util_1.getShortPkgName)(pkg.name),
path
.relative(path.join(process.cwd(), 'src'), filename)
.replace(/\?.*$/g, '')
.replace('.module.less', '')
.replace('/index', ''),
name,
].map(_.kebabCase).join('_');
},
},
preprocessorOptions: {
less: {},
},
},
}, userConfig);
if (!['serve', 'build'].includes(command))
return userConfig;
const config = (await (command === 'serve'
? Promise.resolve().then(() => require('./config/serve')) : Promise.resolve().then(() => require('./config/build')))).default;
return (0, util_1.mergeConfig)(await config(userConfig), commonConfig);
});
}
exports.default = defineConfig;
exports.defineConfig = defineConfig;
;