1 | 'use strict';
|
2 |
|
3 |
|
4 | const path = require('path');
|
5 |
|
6 |
|
7 | const jdfUtils = require('jdf-utils');
|
8 | const $ = jdfUtils.base;
|
9 | const jdf = require('./jdf');
|
10 | const vfs = require('./VFS/VirtualFileSystem');
|
11 | const logger = require('jdf-log');
|
12 |
|
13 | module.exports.init = () => {
|
14 | const files = vfs.queryFileByType(['babel', 'es6']);
|
15 | if(files.length > 0) {
|
16 | logger.profile('parse es6');
|
17 | const babel = require('babel-core');
|
18 | files.forEach((item) => {
|
19 | const result = babel.transform(item.originContent, {
|
20 | presets: $.uniq(jdf.config.babel.defaultPresets.concat(jdf.config.babel.presets || [])),
|
21 | plugins: $.uniq(jdf.config.babel.defaultPlugins.concat(jdf.config.babel.plugins || [])),
|
22 | sourceRoot: path.resolve(__dirname, '../node_modules'),
|
23 | sourceMaps: true
|
24 | });
|
25 | logger.verbose(`build ES6: ${item.originPath}`);
|
26 | var fileName = path.basename(item.originPath, '.babel');
|
27 | fileName = path.basename(fileName, '.es6');
|
28 | const sourcemapFileName = `${fileName}.js.map`;
|
29 | item.targetContent = `${result.code}\n//# sourceMappingURL=./${sourcemapFileName}`;
|
30 | result.map.file = `${fileName}}.js`;
|
31 | logger.verbose(`generate sourcemap ${sourcemapFileName}`);
|
32 | const sourcemapFilePath = path.join(path.dirname(item.originPath), sourcemapFileName);
|
33 | vfs.addFile(sourcemapFilePath, JSON.stringify(result.map));
|
34 | });
|
35 | logger.profile('parse es6');
|
36 | }
|
37 | }
|