spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/spin.js/master/logo.svg"></a></p>
32 lines (30 loc) • 1.24 kB
text/typescript
import Spin from "../Spin";
import { ConfigPlugin } from "../ConfigPlugin";
import { Builder } from "../Builder";
import requireModule from '../requireModule';
import JSRuleFinder from './shared/JSRuleFinder';
export default class ReactHotLoaderPlugin implements ConfigPlugin {
configure(builder: Builder, spin: Spin) {
const stack = builder.stack;
if (stack.hasAll(['react-hot-loader', 'webpack'])
&& spin.dev && !spin.test && !stack.hasAny('dll')) {
builder.config = spin.mergeWithStrategy({
entry: 'prepend',
}, builder.config, {
entry: {
index: [
requireModule.resolve('react-hot-loader/patch')
]
}
});
const jsRuleFinder = new JSRuleFinder(builder);
const jsRule = jsRuleFinder.rule;
const isBabelUsed = jsRule.use.loader && jsRule.use.loader.indexOf('babel') >= 0;
jsRule.use = spin.merge(jsRule.use, {
options: {
plugins: [requireModule.resolve(isBabelUsed ? 'react-hot-loader/babel' : 'react-hot-loader/webpack')]
}
})
}
}
}