-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
60 lines (48 loc) · 1.47 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
const defaultFileExtensions = ['.js', '.es6', '.marko'];
// The `filename` is required and necessary for error reporting and logging
exports.name = 'babel';
exports.install = function (pluginContext) {
const BabelConfig = pluginContext.models.Model.extend({
properties: {
extensions: [String],
babelOptions: Object
}
});
Object.assign(pluginContext.models.Project.properties, {
babelConfig: {
type: BabelConfig,
description: 'Babel configuration'
}
});
};
exports.projectCreated = (project) => {
let logger = project.logger('babel');
let lassoConfig = project.getLassoConfig();
if (!lassoConfig) {
lassoConfig = {};
project.setLassoConfig(lassoConfig);
}
let lassoConfigRequire = lassoConfig.require || (lassoConfig.require = {});
let transforms = lassoConfigRequire.transforms || (lassoConfigRequire.transforms = []);
let babelConfig = project.getBabelConfig();
if (babelConfig) {
let extensions = babelConfig.getExtensions();
if (extensions) {
if (!extensions.includes('.marko')) {
extensions.push('.marko');
}
} else {
babelConfig.setExtensions(defaultFileExtensions);
}
babelConfig = babelConfig.clean();
} else {
babelConfig = {
extensions: defaultFileExtensions
};
}
transforms.push({
transform: require('lasso-babel-transform'),
config: babelConfig
});
logger.info(`Installed lasso-babel-transform into project "${project.getName()}"`);
};