-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbabel.config.js
66 lines (58 loc) · 1.55 KB
/
babel.config.js
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
const {engines} = require('./package.json');
/**
* @typedef babelConfigApiCacheType
* @property {function(function(): *): *} using - Cache using method.
*/
/**
* @typedef babelConfigApiType
* @property {babelConfigApiCacheType} cache - Api cache.
*/
const targets = {
node: engines.node.replace(/[^0-9.]/g, '')
};
const date = new Date();
const codisticaLicense = `/**
* @license Codistica
*
* Copyright (c) ${date.getFullYear()}, Codistica and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* BUILD DATE: ${date.toString()}
*/`;
/**
* @function babelConfig
* @description Babel configuration function.
* @param {babelConfigApiType} api - Babel API.
* @returns {Object<string,*>} Babel config.
*/
module.exports = function babelConfig(api) {
// GET NEEDED PROCESS ENV VARIABLES
const ESModules = process.env.NPM_CONFIG_ES_MODULES === 'true';
if (api) {
// SETUP CACHE
api.cache.using(() => ESModules);
}
return {
plugins: [
[
'@comandeer/babel-plugin-banner',
{
banner: codisticaLicense
}
]
],
presets: [
[
'@babel/preset-env',
{
spec: true,
modules: ESModules? false : 'auto',
targets: targets,
ignoreBrowserslistConfig: true
}
]
]
};
};