mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-12 01:23:52 +00:00
Requires special handling since they are using .esnext file extension for some reason.
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
// https://github.com/gsoft-inc/craco/blob/master/packages/craco/README.md#configuration
|
|
|
|
const { getLoader, getLoaders, loaderByName } = require('@craco/craco');
|
|
|
|
module.exports = {
|
|
webpack: {
|
|
configure: {
|
|
resolve: {
|
|
// need 'esnext' first to avoid compile errors
|
|
mainFields: ['esnext', 'browser', 'module', 'main'],
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
{
|
|
plugin: {
|
|
overrideWebpackConfig: ({
|
|
webpackConfig,
|
|
cracoConfig,
|
|
pluginOptions,
|
|
context: { env, paths },
|
|
}) => {
|
|
// add .esnext file extension for @shopify/*
|
|
|
|
webpackConfig.resolve.extensions = [
|
|
'.web.esnext',
|
|
'.esnext',
|
|
...webpackConfig.resolve.extensions,
|
|
];
|
|
|
|
const babelLoaders = getLoaders(
|
|
webpackConfig,
|
|
loaderByName('babel-loader'),
|
|
);
|
|
babelLoaders.matches[0].loader.test = /\.(esnext|js|mjs|jsx|ts|tsx)$/;
|
|
babelLoaders.matches[1].loader.test = /\.(esnext|js|mjs)$/;
|
|
|
|
const fileLoader = getLoader(
|
|
webpackConfig,
|
|
loaderByName('file-loader'),
|
|
);
|
|
fileLoader.match.loader.exclude = [
|
|
/\.(esnext|js|mjs|jsx|ts|tsx)$/,
|
|
/\.html$/,
|
|
/\.json$/,
|
|
];
|
|
|
|
return webpackConfig;
|
|
},
|
|
},
|
|
options: {},
|
|
},
|
|
],
|
|
};
|