-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtransform.js
More file actions
72 lines (63 loc) · 1.71 KB
/
transform.js
File metadata and controls
72 lines (63 loc) · 1.71 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
* Transform source code of file-replace-loader to old JS for more compatibility
* {@link https://github.com/vyushin/file-replace-loader/blob/master/transform.js}
*/
console.time('time');
console.info(`
_____ __
|_ _| __ __ _ _ __ ___ / _| ___ _ __ _ __ ___
| || '__/ _\` | '_ \\/ __| |_ / _ \\| '__| '_ \` _ \\
| || | | (_| | | | \\__ \\ _| (_) | | | | | | | |
|_||_| \\__,_|_| |_|___/_| \\___/|_| |_| |_| |_|
`);
const { resolve, basename } = require('path');
const { transformFileAsync } = require('@babel/core');
const { mkdirSync, writeFileSync } = require('fs');
/**
* Target code must be compatible with this Node.js version
* @const
*/
const TARGET_NODE_VERSION = '4.3.0';
/**
* Transform BABEL options
* @const
*/
const TRANSFORM_OPTIONS = {
sourceType: 'module',
comments: true,
sourceMaps: false,
minified: false,
configFile: false,
babelrc: false,
presets: [
['@babel/preset-env', {
targets: {
node: TARGET_NODE_VERSION,
},
}],
],
};
/**
* Files which will be transformed
* @const
*/
const SOURCES = [
resolve('./src/index.js'),
resolve('./src/constants.js'),
];
/**
* Destination directory
* @const
*/
const DIST_DIR = resolve('./dist');
mkdirSync(DIST_DIR);
console.info(`Transform files for Node.js v${TARGET_NODE_VERSION}:\n ${SOURCES.join(',\n ')}`);
const promises = SOURCES.map((source) => (
transformFileAsync(source, TRANSFORM_OPTIONS).then((result) => {
writeFileSync(resolve(DIST_DIR, basename(source)), result.code);
})
));
Promise.all(promises).then(() => {
console.info('\nTRANSFORM SUCCESSFUL!');
console.timeEnd('time');
});