@vitjs/vit
Version:
🛠 React application framework inspired by UmiJS.
135 lines (134 loc) • 5.32 kB
JavaScript
;
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;