forked from airbnb/babel-preset-airbnb
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
64 lines (56 loc) · 1.95 KB
/
index.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
'use strict';
var assign = require('object.assign');
var modules = [require('babel-plugin-transform-es2015-modules-commonjs'), {
strictMode: true, // add "use strict"
strict: false // this allows __esModule to be exported
}];
var defaultTargets = {
android: 30,
chrome: 35,
edge: 14,
explorer: 9,
firefox: 52,
safari: 8,
ucandroid: 1
};
function buildTargets(options) {
return assign({}, defaultTargets, options.additionalTargets);
}
module.exports = function buildAirbnbPreset(context, options) {
var transpileTargets = (options && options.targets) || buildTargets(options || {});
var debug = (options && typeof options.debug === 'boolean') ? !!options.debug : false;
return {
presets: [
require('babel-preset-env').default(null, {
debug: debug,
exclude: [
'transform-async-to-generator',
'transform-es2015-template-literals',
'transform-regenerator'
],
modules: false,
targets: transpileTargets
}),
require('@babel/preset-react')
],
plugins: [
options && !!options.removePropTypes ? ['babel-plugin-transform-react-remove-prop-types', assign({
mode: 'wrap',
additionalLibraries: ['airbnb-prop-types'],
ignoreFilenames: ['node_modules']
}, options.removePropTypes)] : null,
options && options.modules === false ? null : modules,
options && options.modules === false ? null : ['babel-plugin-transform-strict-mode', { strictMode: true }],
[require('babel-plugin-transform-es2015-template-literals'), {
spec: true
}],
require('babel-plugin-transform-es5-property-mutators'),
require('babel-plugin-transform-es3-member-expression-literals'),
require('babel-plugin-transform-es3-property-literals'),
require('babel-plugin-transform-jscript'),
[require('babel-plugin-transform-object-rest-spread'), {
useBuiltIns: true
}]
].filter(Boolean)
};
};