-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathbabel7.ts
More file actions
40 lines (34 loc) · 1.15 KB
/
babel7.ts
File metadata and controls
40 lines (34 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import localRequire from '@jgbjs/shared/lib/utils/localRequire';
import BabelAsset from './BabelAsset';
export default async function babel7(asset: BabelAsset, options: any = {}) {
let config = options.config;
// If this is an internally generated config, use our internal @babel/core,
// otherwise require a local version from the package we're compiling.
let babel = options.internal
? require('@babel/core')
: await localRequire('@babel/core', asset.name);
let pkg = await asset.getPackage();
config.code = false;
config.ast = true;
config.filename = asset.name;
config.cwd = pkg ? pkg.pkgdir : asset.options.rootDir;
config.babelrc = false;
config.configFile = false;
config.parserOpts = Object.assign({}, config.parserOpts, {
allowReturnOutsideFunction: true,
strictMode: false,
sourceType: 'module',
plugins: ['dynamicImport']
});
let res;
const contents = asset.outputCode || asset.contents;
if (asset.ast) {
res = babel.transformFromAst(asset.ast, contents, config);
} else {
res = babel.transformSync(contents, config);
}
if (res.ast) {
asset.ast = res.ast;
asset.isAstDirty = true;
}
}