UNPKG

@vitjs/vit

Version:

🛠 React application framework inspired by UmiJS.

135 lines (134 loc) 5.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const core_1 = require("@vitjs/core"); const utils_1 = require("@vitjs/utils"); const chokidar_1 = __importDefault(require("chokidar")); const generateFiles_1 = require("./generateFiles"); const preset_1 = require("./preset"); function pluginFactory(config) { const { routes, dynamicImport } = config; let base = '/'; let service; const watchers = []; let resolvedConfig; return { name: 'vit-app', config: () => ({ resolve: { alias: [ { find: /@@\/exports$/, replacement: (0, utils_1.winPath)((0, path_1.resolve)(process.cwd(), './src/.vit/exports')), }, { find: /@vit-app$/, replacement: (0, utils_1.winPath)((0, path_1.resolve)(process.cwd(), './src/.vit/vit')), }, ], }, }), closeBundle: () => { // 不关闭会导致编译完成时命令不会自动退出 watchers.forEach((item) => item.close()); (0, preset_1.exportStatic)({ service, config, }); }, configResolved: (theResolvedConfig) => { var _a, _b; resolvedConfig = theResolvedConfig; base = resolvedConfig.base; service = new core_1.Service({ debug: config.debug, cwd: process.cwd(), outDir: resolvedConfig.build.outDir, routes: routes || [], dynamicImport: dynamicImport, }); (0, generateFiles_1.generateHistory)({ ...config, base, service, }); (0, generateFiles_1.generateRoutes)(service); (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); (0, generateFiles_1.generateExports)(service); // ref: // https://github.com/paulmillr/chokidar/issues/639 [...(0, generateFiles_1.getImportAheadModules)((_a = config.globalImport) === null || _a === void 0 ? void 0 : _a.aheadModules), ...(0, generateFiles_1.getImportModules)((_b = config.globalImport) === null || _b === void 0 ? void 0 : _b.modules)] .map((item) => (0, utils_1.winPath)((0, path_1.resolve)(service.paths.absSrcPath, item))) .forEach((item) => { const watcher = chokidar_1.default.watch(item); watcher .on('add', () => { if (config.debug) { console.log('[vit-app] add file:', item); } (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); }) .on('unlink', () => { if (config.debug) { console.log('[vit-app] unlink file:', item); } (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); }); watchers.push(watcher); }); service._customApps .map((item) => (0, utils_1.winPath)((0, path_1.resolve)(service.paths.absSrcPath, item))) .forEach((item) => { const watcher = chokidar_1.default.watch(item); watcher .on('add', () => { if (config.debug) { console.log('[vit-app] add custom app:', item); } (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); }) .on('change', () => { if (config.debug) { console.log('[vit-app] change custom app:', item); } (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); }) .on('unlink', () => { if (config.debug) { console.log('[vit-app] unlink custom app:', item); } (0, generateFiles_1.generateVit)({ ...config, service, command: resolvedConfig.command, }); }); watchers.push(watcher); }); }, }; } exports.default = pluginFactory;