@aliretail/vite-config-xixi
Version:
瓴羊客服vite配置脚手架
96 lines (95 loc) • 3.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const _ = require("lodash");
const plugin_react_refresh_1 = require("@vitejs/plugin-react-refresh");
const var_externals_1 = require("../plugins/var-externals");
const entry_1 = require("../plugins/entry");
const externals_1 = require("../externals");
const util_1 = require("../util");
async function configServe({ server } = {}) {
const proxyTarget = process.env.PROXY_TARGET;
const useProxy = proxyTarget !== 'false';
const [devExternals, pkg] = await Promise.all([(0, externals_1.fetchDevExternals)(), (0, util_1.readPackage)()]);
return {
optimizeDeps: {
entries: ['src/index.*'],
exclude: _.keys(devExternals),
// react-dom 及 react-dom/server 无法从 entries 中分析得到,会在第一次加载时 404
include: ['react', 'react-dom', 'react-dom/server'],
esbuildOptions: {
plugins: [
{
name: 'remove-amd',
setup(build) {
const options = build.initialOptions;
options.define = options.define || {};
options.define.define = 'undefined';
},
},
{
name: 'fix-external',
setup(build) {
const { external } = build.initialOptions;
build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id }) => {
if (external?.includes(id)) {
return {
path: id,
external: true,
};
}
});
},
},
],
},
},
define: {
'process.env.LOCAL_PACKAGE_NAME': JSON.stringify(pkg.name),
'process.env.LOCAL_VERSION': JSON.stringify(pkg.version),
'process.env.LOCAL_BUNDLE': JSON.stringify(pkg.bundle),
'process.env.DEV_EXTERNALS': JSON.stringify(devExternals),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
},
resolve: {
dedupe: ['react', 'react-dom'],
},
server: {
host: 'local.crm.taobao.net',
port: 8080,
https: true,
open: true,
...(useProxy
? {
proxy: {
'/g_config.js': {
target: proxyTarget,
changeOrigin: true,
autoRewrite: true,
secure: false,
},
'/favicon.ico': {
target: proxyTarget,
changeOrigin: true,
autoRewrite: true,
secure: false,
},
'/base/': {
target: proxyTarget,
changeOrigin: true,
autoRewrite: true,
secure: false,
},
},
}
: null),
},
plugins: [
(0, plugin_react_refresh_1.default)(),
(0, var_externals_1.default)({
externals: devExternals,
}),
(0, entry_1.default)(useProxy ? proxyTarget : undefined),
],
};
}
exports.default = configServe;
;