perf(cli): simplify babel cache

This commit is contained in:
陈嘉涵
2020-01-10 11:46:30 +08:00
parent 4d86375ac6
commit f4d10df14d
6 changed files with 15 additions and 56 deletions

View File

@@ -1,49 +1,11 @@
// @ts-ignore
import findBabelConfig from 'find-babel-config';
import { join } from 'path';
import { transformFileAsync } from '@babel/core';
import { removeSync, outputFileSync, existsSync } from 'fs-extra';
import { removeSync, outputFileSync } from 'fs-extra';
import { replaceExt } from '../common';
import { ROOT, DIST_DIR } from '../common/constant';
type Options = {
// whether to fouce reload babel config
reloadConfig?: boolean;
};
const TEMP_BABEL_CONFIG = join(DIST_DIR, 'babel.config.js');
function genTempBabelConfig() {
const { config } = findBabelConfig.sync(ROOT);
const content = `module.exports = function (api) {
api.cache.never();
return ${JSON.stringify(config)}
};`;
outputFileSync(TEMP_BABEL_CONFIG, content);
}
function getBabelOptions(options: Options) {
if (options.reloadConfig) {
if (!existsSync(TEMP_BABEL_CONFIG)) {
genTempBabelConfig();
}
return {
configFile: TEMP_BABEL_CONFIG
};
}
return {};
}
export function compileJs(
filePath: string,
options: Options = {}
): Promise<undefined> {
export function compileJs(filePath: string): Promise<undefined> {
return new Promise((resolve, reject) => {
transformFileAsync(filePath, getBabelOptions(options))
transformFileAsync(filePath)
.then(result => {
if (result) {
const jsFilePath = replaceExt(filePath, '.js');