Skip to content

Commit

Permalink
ADD support for multiple resolve directories
Browse files Browse the repository at this point in the history
  • Loading branch information
ndelangen committed Dec 16, 2019
1 parent 5f06156 commit 1165272
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 20 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"deepscan.enable": true
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@ import CoreJSUpgradeWebpackPlugin from 'corejs-upgrade-webpack-plugin';

// add this to your webpack.plugins config
new CoreJSUpgradeWebpackPlugin({
resolveFrom: process.cwd(),
resolveFrom: [process.cwd()],
});
```
51 changes: 32 additions & 19 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,18 @@ export const rewriteCoreJsRequest = (originalRequest: string, lowerVersion = fal
};

export interface Options {
resolveFrom: string | false;
resolveFrom: string | false | string[];
}

const defaultOptions = {
resolveFrom: false,
resolveBackup: false,
} as Options

export default function CoreJSUpgradeWebpackPlugin(options: Options) {
options = Object.assign({}, defaultOptions, options || {});
const resolve = options.resolveFrom ? resolveFrom.bind(null, options.resolveFrom) : require.resolve;

const resolvers = options.resolveFrom ? [].concat(options.resolveFrom).map(r => resolveFrom.bind(null, r)) : [];

return new NormalModuleReplacementPlugin(/core-js/, resource => {
const originalRequest = (resource.userRequest || resource.request) as string;
Expand All @@ -92,28 +94,39 @@ export default function CoreJSUpgradeWebpackPlugin(options: Options) {
if (originalRequest.match(/@babel\/runtime\/core-js/)) {
return;
}

try {
require.resolve(originalRequest);
} catch (originalError) {
let error = true;

// attempt to upgrade the path from core-js v2 to v3
if (error) {
try {
// eslint-disable-next-line no-param-reassign
resource.request = resolve(rewriteCoreJsRequest(originalRequest));
error = false;
} catch (e) {}
}

// attempt to downgrade the path from es7 to es6
if (error) {
try {
// eslint-disable-next-line no-param-reassign
resource.request = resolve(rewriteCoreJsRequest(originalRequest, true));
error = false;
} catch (e) {}
for (const resolve of resolvers) {
// attempt the core-js v2 from backup
if (error) {
try {
// eslint-disable-next-line no-param-reassign
resource.request = resolve(originalRequest);
error = false;
} catch (e) {}
}

// attempt to upgrade the path from core-js v2 to v3 from backup
if (error) {
try {
// eslint-disable-next-line no-param-reassign
resource.request = resolve(rewriteCoreJsRequest(originalRequest));
error = false;
} catch (e) {}
}

// attempt to downgrade the path from es7 to es6 from backup
if (error) {
try {
// eslint-disable-next-line no-param-reassign
resource.request = resolve(rewriteCoreJsRequest(originalRequest, true));
error = false;
} catch (e) {}
}
}

if (error) {
Expand Down

0 comments on commit 1165272

Please sign in to comment.