spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/spin.js/master/logo.svg"></a></p>
33 lines (31 loc) • 1.27 kB
text/typescript
import Spin from "../Spin";
import { ConfigPlugin } from "../ConfigPlugin";
import { Builder } from "../Builder";
import requireModule from '../requireModule';
export default class ReactNativeWebPlugin implements ConfigPlugin {
configure(builder: Builder, spin: Spin) {
const stack = builder.stack;
if (stack.hasAll(['react-native-web', 'server', 'webpack'])) {
const nodeExternals = requireModule('webpack-node-externals');
const nodeExternalsFn = nodeExternals({
whitelist: [/(^webpack|^react-native)/],
});
builder.config = spin.merge(builder.config, {
resolve: {
alias: {
'react-native': 'react-native-web',
}
}
});
builder.config.externals = function(context, request, callback) {
return nodeExternalsFn(context, request, function () {
if (request.indexOf('react-native') >= 0) {
return callback(null, 'commonjs ' + request + '-web');
} else {
return callback.apply(this, arguments);
}
});
};
}
}
}