Merge branch '2.x' into dev

This commit is contained in:
chenjiahan
2020-12-03 17:19:17 +08:00
7 changed files with 39 additions and 5 deletions

View File

@@ -1,16 +1,18 @@
import { transformAsync } from '@babel/core';
import { readFileSync, removeSync, outputFileSync } from 'fs-extra';
import { replaceExt } from '../common';
import { replaceCssImport } from '../common/css';
import { replaceCssImportExt } from '../common/css';
import { replaceScriptImportExt } from './get-deps';
export function compileJs(filePath: string): Promise<void> {
return new Promise((resolve, reject) => {
let code = readFileSync(filePath, 'utf-8');
code = replaceCssImport(code);
code = replaceCssImportExt(code);
code = replaceScriptImportExt(code, '.vue', '');
transformAsync(code, { filename: filePath })
.then(result => {
.then((result) => {
if (result) {
const jsFilePath = replaceExt(filePath, '.js');

View File

@@ -6,7 +6,7 @@ let depsMap: Record<string, string[]> = {};
let existsCache: Record<string, boolean> = {};
// https://regexr.com/47jlq
const IMPORT_RE = /import\s+?(?:(?:(?:[\w*\s{},]*)\s+from\s+?)|)(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g;
const IMPORT_RE = /import\s+?(?:(?:(?:[\w*\s{},]*)\s+from(\s+)?)|)(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g;
function matchImports(code: string): string[] {
return code.match(IMPORT_RE) || [];
@@ -71,3 +71,15 @@ export function getDeps(filePath: string) {
return paths;
}
// "import App from 'App.vue';" => "import App from 'App.xxx';"
export function replaceScriptImportExt(code: string, from: string, to: string) {
const importLines = matchImports(code);
importLines.forEach(importLine => {
const result = importLine.replace(from, to);
code = code.replace(importLine, result);
});
return code;
}