Skip to content

Commit 41301bd

Browse files
committed
refactor: use babel-plugin-module-resolver for aliasing
1 parent e48c10b commit 41301bd

File tree

6 files changed

+52
-22
lines changed

6 files changed

+52
-22
lines changed

templates/common/example/metro.config.js

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
11
const path = require('path');
2-
const fs = require('fs');
32
const blacklist = require('metro-config/src/defaults/blacklist');
43
const escape = require('escape-string-regexp');
4+
const pak = require('../package.json');
55

66
const root = path.resolve(__dirname, '..');
7-
const pak = JSON.parse(
8-
fs.readFileSync(path.join(root, 'package.json'), 'utf8')
9-
);
107

11-
const modules = [
12-
'@babel/runtime',
13-
...Object.keys({
14-
...pak.dependencies,
15-
...pak.peerDependencies,
16-
}),
17-
];
8+
const modules = Object.keys({
9+
...pak.peerDependencies,
10+
});
1811

1912
module.exports = {
2013
projectRoot: __dirname,
2114
watchFolders: [root],
2215

16+
// We need to make sure that only one version is loaded for peerDependencies
17+
// So we blacklist them at the root, and alias them to the versions in example's node_modules
2318
resolver: {
24-
blacklistRE: blacklist([
25-
new RegExp(`^${escape(path.join(root, 'node_modules'))}\\/.*$`),
26-
]),
19+
blacklistRE: blacklist(
20+
modules.map(
21+
(m) =>
22+
new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`)
23+
)
24+
),
2725

2826
extraNodeModules: modules.reduce((acc, name) => {
2927
acc[name] = path.join(__dirname, 'node_modules', name);

templates/expo-library/example/$package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"devDependencies": {
2323
"@babel/core": "^7.9.6",
2424
"@babel/runtime": "^7.9.6",
25+
"babel-plugin-module-resolver": "^4.0.0",
2526
"babel-preset-expo": "~8.1.0",
2627
"expo-cli": "^3.17.18"
2728
}
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
1+
const path = require('path');
2+
const pak = require('../package.json');
3+
14
module.exports = function (api) {
25
api.cache(true);
6+
37
return {
48
presets: ['babel-preset-expo'],
9+
plugins: [
10+
[
11+
'module-resolver',
12+
{
13+
alias: {
14+
// For development, we want to alias the library to the source
15+
[pak.name]: path.join(__dirname, '..', pak.source),
16+
},
17+
},
18+
],
19+
],
520
};
6-
};
21+
}

templates/expo-library/example/webpack.config.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
const path = require('path');
22
const createExpoWebpackConfigAsync = require('@expo/webpack-config');
3+
const { resolver } = require('./metro.config');
34

45
const root = path.resolve(__dirname, '..');
5-
const node_modules = path.resolve(__dirname, 'node_modules');
6+
const node_modules = path.join(__dirname, 'node_modules');
67

78
module.exports = async function (env, argv) {
89
const config = await createExpoWebpackConfigAsync(env, argv);
910

1011
config.module.rules.push({
1112
test: /\.(js|ts|tsx)$/,
12-
include: path.resolve('../src'),
13+
include: path.resolve(root, 'src'),
1314
use: 'babel-loader',
1415
});
1516

17+
// We need to make sure that only one version is loaded for peerDependencies
18+
// So we alias them to the versions in example's node_modules
1619
Object.assign(config.resolve.alias, {
17-
'react': path.join(node_modules, 'react'),
20+
...resolver.extraNodeModules,
1821
'react-native-web': path.join(node_modules, 'react-native-web'),
19-
'<%= project.slug %>': path.join(
20-
root,
21-
require('../package.json').source
22-
),
2322
});
2423

2524
return config;

templates/native-library/example/$package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"devDependencies": {
1616
"@babel/core": "^7.9.6",
1717
"@babel/runtime": "^7.9.6",
18+
"babel-plugin-module-resolver": "^4.0.0",
1819
"metro-react-native-babel-preset": "^0.59.0"
1920
}
2021
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const path = require('path');
2+
const pak = require('../package.json');
3+
4+
module.exports = {
5+
presets: ['module:metro-react-native-babel-preset'],
6+
plugins: [
7+
[
8+
'module-resolver',
9+
{
10+
alias: {
11+
[pak.name]: path.join(__dirname, '..', pak.source),
12+
},
13+
},
14+
],
15+
],
16+
};

0 commit comments

Comments
 (0)