diff --git a/packages/vant-cli/src/compiler/compile-js.ts b/packages/vant-cli/src/compiler/compile-js.ts index e8525b368..b5895ee74 100644 --- a/packages/vant-cli/src/compiler/compile-js.ts +++ b/packages/vant-cli/src/compiler/compile-js.ts @@ -1,11 +1,25 @@ // @ts-ignore -import { transformFileAsync } from '@babel/core'; -import { removeSync, outputFileSync } from 'fs-extra'; +import { transformAsync } from '@babel/core'; +import { readFileSync, removeSync, outputFileSync } from 'fs-extra'; import { replaceExt } from '../common'; +import { CSS_LANG } from '../common/css'; + +const IMPORT_STYLE_RE = /import\s+?(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g; + +// "import 'a.less';" => "import 'a.css';" +function replaceStyleImport(code: string) { + return code.replace(IMPORT_STYLE_RE, str => + str.replace(`.${CSS_LANG}`, '.css') + ); +} export function compileJs(filePath: string): Promise { return new Promise((resolve, reject) => { - transformFileAsync(filePath) + let code = readFileSync(filePath, 'utf-8'); + + code = replaceStyleImport(code); + + transformAsync(code, { filename: filePath }) .then(result => { if (result) { const jsFilePath = replaceExt(filePath, '.js');