Skip to content

Commit a89ed8b

Browse files
committed
Merge branch 'build-setup' of https://github.com/Andarist/react-router into Andarist-build-setup
2 parents 0989d26 + 1cc2e1c commit a89ed8b

22 files changed

+539
-868
lines changed

babel.config.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const loose = true;
2+
3+
module.exports = api => {
4+
return {
5+
presets: [
6+
[
7+
"@babel/preset-env",
8+
{
9+
loose,
10+
...(api.env("test") && { targets: { node: "current" } })
11+
}
12+
],
13+
"@babel/react"
14+
],
15+
plugins: [
16+
"dev-expression",
17+
["@babel/plugin-proposal-class-properties", { loose }]
18+
],
19+
overrides: [
20+
{
21+
test: ["packages/react-router-native", "node_modules/react-native"],
22+
presets: ["module:metro-react-native-babel-preset"]
23+
}
24+
]
25+
};
26+
};

jest-preset.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const { jest: lernaAliases } = require("lerna-alias");
2+
const { TEST_ENV } = process.env;
3+
4+
const moduleType = ["cjs", "umd"].includes(TEST_ENV) ? TEST_ENV : "modules";
5+
6+
const mapValues = (obj, mapper) => {
7+
const mapped = {};
8+
Object.keys(obj).forEach(key => {
9+
mapped[key] = mapper(obj[key]);
10+
});
11+
return mapped;
12+
};
13+
14+
const mapAliasPathToSourceEntry = path =>
15+
path.replace("/src/index", `/${moduleType}/index`);
16+
17+
const mapAliasPathToDistEntry = path =>
18+
path.replace(/\/([a-z-]+)\/src\/index/, (match, pkgName) =>
19+
match.replace("/src/index", `/${moduleType}/${pkgName}`)
20+
);
21+
22+
module.exports = {
23+
testRunner: "jest-circus/runner",
24+
restoreMocks: true,
25+
globals: {
26+
__DEV__: true
27+
},
28+
moduleNameMapper: mapValues(
29+
lernaAliases(),
30+
moduleType === "modules"
31+
? mapAliasPathToSourceEntry
32+
: mapAliasPathToDistEntry
33+
),
34+
setupFiles: ["raf/polyfill"],
35+
testMatch: ["**/__tests__/**/*-test.js"],
36+
transform: {
37+
"^.+\\.[jt]sx?$": "babel-jest"
38+
},
39+
testURL: "http://localhost/"
40+
};

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"build": "node ./scripts/build.js",
66
"clean": "git clean -fdX .",
77
"start": "node ./scripts/start.js",
8-
"test": "node ./scripts/test.js"
8+
"test": "jest --projects ./packages/*/"
99
},
1010
"dependencies": {
1111
"@babel/core": "^7.5.5",
@@ -24,12 +24,16 @@
2424
"jest": "^24.9.0",
2525
"jest-circus": "^24.9.0",
2626
"lerna": "^3.13.4",
27+
"lerna-alias": "3.0.3-0",
2728
"lerna-changelog": "^0.8.2",
29+
"metro-react-native-babel-preset": "^0.56.0",
2830
"prettier": "^1.14.3",
2931
"pretty-quick": "^1.4.1",
3032
"raf": "^3.4.1",
3133
"react": "^16.9.0",
3234
"react-dom": "^16.9.0",
35+
"react-native": "^0.61.1",
36+
"react-test-renderer": "^16.8.3",
3337
"rollup": "^1.20.3",
3438
"rollup-plugin-babel": "^4.3.3",
3539
"rollup-plugin-commonjs": "^10.1.0",
@@ -40,10 +44,6 @@
4044
"workspaces": {
4145
"packages": [
4246
"packages/*"
43-
],
44-
"nohoist": [
45-
"**/react-native",
46-
"**/react-native/**"
4747
]
4848
}
4949
}
+1-27
Original file line numberDiff line numberDiff line change
@@ -1,27 +1 @@
1-
let mappedModule;
2-
switch (process.env.TEST_ENV) {
3-
case "cjs":
4-
mappedModule = "<rootDir>/cjs/react-router-config.js";
5-
break;
6-
case "umd":
7-
mappedModule = "<rootDir>/umd/react-router-config.js";
8-
break;
9-
default:
10-
mappedModule = "<rootDir>/modules/index.js";
11-
}
12-
13-
module.exports = {
14-
testRunner: "jest-circus/runner",
15-
restoreMocks: true,
16-
globals: {
17-
__DEV__: true
18-
},
19-
moduleNameMapper: {
20-
"^react-router$": "<rootDir>/../react-router/cjs/react-router.js",
21-
"^react-router-config$": mappedModule
22-
},
23-
modulePaths: ["<rootDir>/node_modules"],
24-
setupFiles: ["raf/polyfill"],
25-
testMatch: ["**/__tests__/**/*-test.js"],
26-
testURL: "http://localhost/"
27-
};
1+
module.exports = { preset: "../../jest-preset.js" };

packages/react-router-config/modules/.babelrc

-4
This file was deleted.

packages/react-router-config/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@
2424
"sideEffects": false,
2525
"scripts": {
2626
"build": "rollup -c",
27-
"lint": "eslint modules",
28-
"test": "jest"
27+
"lint": "eslint modules"
2928
},
3029
"peerDependencies": {
3130
"react": ">=15",

packages/react-router-config/rollup.config.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const cjs = [
2323
},
2424
external: isBareModuleId,
2525
plugins: [
26-
babel({ exclude: /node_modules/, sourceMaps: true }),
26+
babel({ exclude: /node_modules/, sourceMaps: true, rootMode: "upward" }),
2727
replace({ "process.env.NODE_ENV": JSON.stringify("development") })
2828
]
2929
},
@@ -32,7 +32,7 @@ const cjs = [
3232
output: { file: `cjs/${pkg.name}.min.js`, sourcemap: true, format: "cjs" },
3333
external: isBareModuleId,
3434
plugins: [
35-
babel({ exclude: /node_modules/, sourceMaps: true }),
35+
babel({ exclude: /node_modules/, sourceMaps: true, rootMode: "upward" }),
3636
replace({ "process.env.NODE_ENV": JSON.stringify("production") }),
3737
uglify()
3838
]
@@ -49,7 +49,8 @@ const esm = [
4949
exclude: /node_modules/,
5050
sourceMaps: true,
5151
runtimeHelpers: true,
52-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
52+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
53+
rootMode: "upward"
5354
})
5455
]
5556
}
@@ -75,7 +76,8 @@ const umd = [
7576
exclude: /node_modules/,
7677
runtimeHelpers: true,
7778
sourceMaps: true,
78-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
79+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
80+
rootMode: "upward"
7981
}),
8082
nodeResolve(),
8183
commonjs({
@@ -103,7 +105,8 @@ const umd = [
103105
exclude: /node_modules/,
104106
runtimeHelpers: true,
105107
sourceMaps: true,
106-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
108+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
109+
rootMode: "upward"
107110
}),
108111
nodeResolve(),
109112
commonjs({
+1-26
Original file line numberDiff line numberDiff line change
@@ -1,26 +1 @@
1-
let mappedModule;
2-
switch (process.env.TEST_ENV) {
3-
case "cjs":
4-
mappedModule = "<rootDir>/cjs/react-router-dom.js";
5-
break;
6-
case "umd":
7-
mappedModule = "<rootDir>/umd/react-router-dom.js";
8-
break;
9-
default:
10-
mappedModule = "<rootDir>/modules/index.js";
11-
}
12-
13-
module.exports = {
14-
testRunner: "jest-circus/runner",
15-
restoreMocks: true,
16-
globals: {
17-
__DEV__: true
18-
},
19-
moduleNameMapper: {
20-
"^react-router-dom$": mappedModule
21-
},
22-
modulePaths: ["<rootDir>/node_modules"],
23-
setupFiles: ["raf/polyfill"],
24-
testMatch: ["**/__tests__/**/*-test.js"],
25-
testURL: "http://localhost/"
26-
};
1+
module.exports = { preset: "../../jest-preset.js" };

packages/react-router-dom/modules/.babelrc

-7
This file was deleted.

packages/react-router-dom/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
"sideEffects": false,
3838
"scripts": {
3939
"build": "rollup -c",
40-
"lint": "eslint modules",
41-
"test": "jest"
40+
"lint": "eslint modules"
4241
},
4342
"peerDependencies": {
4443
"react": ">=15"

packages/react-router-dom/rollup.config.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const cjs = [
2424
},
2525
external: isBareModuleId,
2626
plugins: [
27-
babel({ exclude: /node_modules/, sourceMaps: true }),
27+
babel({ exclude: /node_modules/, sourceMaps: true, rootMode: "upward" }),
2828
replace({ "process.env.NODE_ENV": JSON.stringify("development") })
2929
]
3030
},
@@ -33,7 +33,7 @@ const cjs = [
3333
output: { file: `cjs/${pkg.name}.min.js`, sourcemap: true, format: "cjs" },
3434
external: isBareModuleId,
3535
plugins: [
36-
babel({ exclude: /node_modules/, sourceMaps: true }),
36+
babel({ exclude: /node_modules/, sourceMaps: true, rootMode: "upward" }),
3737
replace({ "process.env.NODE_ENV": JSON.stringify("production") }),
3838
uglify()
3939
]
@@ -50,7 +50,8 @@ const esm = [
5050
exclude: /node_modules/,
5151
runtimeHelpers: true,
5252
sourceMaps: true,
53-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
53+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
54+
rootMode: "upward"
5455
})
5556
]
5657
}
@@ -76,7 +77,8 @@ const umd = [
7677
exclude: /node_modules/,
7778
runtimeHelpers: true,
7879
sourceMaps: true,
79-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
80+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
81+
rootMode: "upward"
8082
}),
8183
nodeResolve(),
8284
commonjs({
@@ -107,7 +109,8 @@ const umd = [
107109
exclude: /node_modules/,
108110
runtimeHelpers: true,
109111
sourceMaps: true,
110-
plugins: [["@babel/transform-runtime", { useESModules: true }]]
112+
plugins: [["@babel/transform-runtime", { useESModules: true }]],
113+
rootMode: "upward"
111114
}),
112115
nodeResolve(),
113116
commonjs({

packages/react-router-native/babel.config.js

-3
This file was deleted.
+36-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
1+
const preset = require("react-native/jest-preset");
2+
const { jest: lernaAliases } = require("lerna-alias");
3+
4+
const mapValues = (obj, mapper) => {
5+
const mapped = {};
6+
Object.keys(obj).forEach(key => {
7+
mapped[key] = mapper(obj[key]);
8+
});
9+
return mapped;
10+
};
11+
12+
const omitBy = (obj, predicate) => {
13+
const mapped = {};
14+
Object.keys(obj).forEach(key => {
15+
if (predicate(obj[key], key)) {
16+
return;
17+
}
18+
mapped[key] = obj[key];
19+
});
20+
return mapped;
21+
};
22+
23+
const monorepoAliases = lernaAliases();
24+
const transpilableAliases = omitBy(monorepoAliases, (_, key) =>
25+
key.includes("react-router-native")
26+
);
27+
128
module.exports = {
2-
preset: "react-native",
29+
...preset,
330
testRunner: "jest-circus/runner",
431
restoreMocks: true,
5-
moduleNameMapper: {
6-
"^react-router$": "<rootDir>/../react-router/cjs/react-router.js"
7-
}
32+
moduleNameMapper: mapValues(transpilableAliases, path =>
33+
path.replace("/src/index", `/modules/index`)
34+
),
35+
transform: mapValues(preset.transform, transformer =>
36+
transformer === "babel-jest"
37+
? ["babel-jest", { rootMode: "upward" }]
38+
: transformer
39+
)
840
};

packages/react-router-native/package.json

+1-11
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
"main": "main.js",
1212
"sideEffects": false,
1313
"scripts": {
14-
"start": "node node_modules/react-native/local-cli/cli.js start",
15-
"test": "jest"
14+
"start": "node node_modules/react-native/local-cli/cli.js start"
1615
},
1716
"files": [
1817
"BackButton.js",
@@ -30,14 +29,5 @@
3029
"dependencies": {
3130
"prop-types": "^15.6.1",
3231
"react-router": "5.1.2"
33-
},
34-
"devDependencies": {
35-
"babel-jest": "^24.8.0",
36-
"jest": "^24.8.0",
37-
"jest-circus": "^24.8.0",
38-
"metro-react-native-babel-preset": "^0.53.1",
39-
"react": "^16.8.3",
40-
"react-native": "^0.59.8",
41-
"react-test-renderer": "^16.8.3"
4232
}
4333
}

packages/react-router/jest.config.js

+1-26
Original file line numberDiff line numberDiff line change
@@ -1,26 +1 @@
1-
let mappedModule;
2-
switch (process.env.TEST_ENV) {
3-
case "cjs":
4-
mappedModule = "<rootDir>/cjs/react-router.js";
5-
break;
6-
case "umd":
7-
mappedModule = "<rootDir>/umd/react-router.js";
8-
break;
9-
default:
10-
mappedModule = "<rootDir>/modules/index.js";
11-
}
12-
13-
module.exports = {
14-
testRunner: "jest-circus/runner",
15-
restoreMocks: true,
16-
globals: {
17-
__DEV__: true
18-
},
19-
moduleNameMapper: {
20-
"^react-router$": mappedModule
21-
},
22-
modulePaths: ["<rootDir>/node_modules"],
23-
setupFiles: ["raf/polyfill"],
24-
testMatch: ["**/__tests__/**/*-test.js"],
25-
testURL: "http://localhost/"
26-
};
1+
module.exports = { preset: "../../jest-preset.js" };

0 commit comments

Comments
 (0)