UNPKG

@aliretail/vite-config-xixi

Version:

瓴羊客服vite配置脚手架

96 lines (95 loc) 3.81 kB
"use strict"; 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;