mirror of
https://github.com/visgl/react-map-gl.git
synced 2026-01-18 15:54:22 +00:00
63 lines
2.4 KiB
JavaScript
63 lines
2.4 KiB
JavaScript
const resolve = require('path').resolve;
|
||
const DEPENDENCIES = require('./package.json').dependencies;
|
||
|
||
module.exports.onCreateWebpackConfig = function onCreateWebpackConfigOverride(opts) {
|
||
const {
|
||
stage, // build stage: ‘develop’, ‘develop-html’, ‘build-javascript’, or ‘build-html’
|
||
// rules, // Object (map): set of preconfigured webpack config rules
|
||
// plugins, // Object (map): A set of preconfigured webpack config plugins
|
||
getConfig, // Function that returns the current webpack config
|
||
// loaders, // Object (map): set of preconfigured webpack config loaders
|
||
actions
|
||
} = opts;
|
||
|
||
console.log(`App rewriting gatsby webpack config ${stage}`); // eslint-disable-line
|
||
|
||
const config = getConfig();
|
||
config.resolve = config.resolve || {};
|
||
config.resolve.alias = config.resolve.alias || {};
|
||
|
||
// When duplicating example dependencies in website, autogenerate
|
||
// aliases to ensure the website version is picked up
|
||
// NOTE: module dependencies are automatically injected
|
||
// TODO - should this be automatically done by ocular-gatsby?
|
||
const dependencyAliases = {};
|
||
for (const dependency in DEPENDENCIES) {
|
||
dependencyAliases[dependency] = `${__dirname}/node_modules/${dependency}`;
|
||
}
|
||
|
||
Object.assign(config.resolve.alias, {
|
||
'react-map-gl': resolve(__dirname, '../src'),
|
||
react: resolve('node_modules/react'),
|
||
'react-dom': resolve('node_modules/react-dom')
|
||
}, dependencyAliases);
|
||
|
||
// turf.js uses mjs
|
||
config.module.rules.push({
|
||
test: /\.mjs$/,
|
||
include: /node_modules/,
|
||
type: "javascript/auto",
|
||
});
|
||
|
||
// Work around for https://github.com/mapbox/mapbox-gl-js/issues/10173
|
||
if (stage === 'build-javascript') {
|
||
for (const rule of config.module.rules) {
|
||
// find the babel loader
|
||
const loader = rule.use &&
|
||
(Array.isArray(rule.use) ? rule.use : [rule.use])
|
||
.find(u => u.loader && u.loader.includes("babel-loader"));
|
||
if (!rule.include && loader && loader.options) {
|
||
loader.options.ignore = [
|
||
resolve(__dirname, '../node_modules/mapbox-gl/dist/mapbox-gl.js')
|
||
];
|
||
}
|
||
}
|
||
}
|
||
|
||
// Completely replace the webpack config for the current stage.
|
||
// This can be dangerous and break Gatsby if certain configuration options are changed.
|
||
// Generally only useful for cases where you need to handle config merging logic yourself,
|
||
// in which case consider using webpack-merge.
|
||
actions.replaceWebpackConfig(config);
|
||
};
|