spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/spin.js/master/logo.svg"></a></p>
39 lines (37 loc) • 1.69 kB
text/typescript
import requireModule from '../requireModule';
import { ConfigPlugin } from '../ConfigPlugin';
import { Builder } from '../Builder';
import Spin from '../Spin';
import JSRuleFinder from './shared/JSRuleFinder';
export default class ES6Plugin implements ConfigPlugin {
configure(builder: Builder, spin: Spin) {
if (builder.stack.hasAll(['es6', 'webpack'])) {
if (builder.stack.hasAny('es6') && !builder.stack.hasAny('dll')) {
builder.config = spin.merge({
entry: {
index: [requireModule.resolve('babel-polyfill')],
},
}, builder.config);
}
const jsRuleFinder = new JSRuleFinder(builder);
const jsRule = jsRuleFinder.rule;
jsRule.exclude = /node_modules/;
jsRule.use = {
loader: requireModule.resolve('babel-loader'),
options: {
cacheDirectory: spin.dev,
presets: [
requireModule.resolve('babel-preset-react'),
[requireModule.resolve('babel-preset-es2015'), {'modules': false}],
requireModule.resolve('babel-preset-stage-0')],
plugins: [
requireModule.resolve('babel-plugin-transform-runtime'),
requireModule.resolve('babel-plugin-transform-decorators-legacy'),
requireModule.resolve('babel-plugin-transform-class-properties'),
],
only: jsRuleFinder.extensions.map(ext => '*.' + ext),
},
};
}
}
}