tamagui-loader 1.82.8 → 1.82.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/TamaguiPlugin.js +105 -5
- package/dist/cjs/TamaguiPlugin.js.map +2 -2
- package/dist/cjs/TamaguiPlugin.native.js +105 -5
- package/dist/cjs/TamaguiPlugin.native.js.map +2 -2
- package/dist/esm/TamaguiPlugin.js +108 -4
- package/dist/esm/TamaguiPlugin.js.map +2 -2
- package/dist/esm/TamaguiPlugin.native.js +108 -4
- package/dist/esm/TamaguiPlugin.native.js.map +2 -2
- package/package.json +7 -4
- package/src/TamaguiPlugin.ts +151 -0
- package/types/TamaguiPlugin.d.ts +7 -0
- package/types/TamaguiPlugin.d.ts.map +1 -1
|
@@ -25,7 +25,10 @@ __export(TamaguiPlugin_exports, {
|
|
|
25
25
|
TamaguiPlugin: () => TamaguiPlugin
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(TamaguiPlugin_exports);
|
|
28
|
-
var import_static = require("@tamagui/static");
|
|
28
|
+
var import_fs = require("fs"), import_path = __toESM(require("path")), import_static = require("@tamagui/static"), import_esm_resolve = __toESM(require("esm-resolve")), import_webpack = __toESM(require("webpack")), import_shouldExclude = require("./shouldExclude");
|
|
29
|
+
const dir = __dirname, resolver = (0, import_esm_resolve.default)((0, import_path.join)(dir, "index.js"), {
|
|
30
|
+
constraints: "node"
|
|
31
|
+
});
|
|
29
32
|
class TamaguiPlugin {
|
|
30
33
|
constructor(options = {
|
|
31
34
|
platform: "web",
|
|
@@ -34,15 +37,91 @@ class TamaguiPlugin {
|
|
|
34
37
|
this.options = options;
|
|
35
38
|
}
|
|
36
39
|
pluginName = "TamaguiPlugin";
|
|
40
|
+
resolveEsm = (relativePath, onlyRequire = !1) => {
|
|
41
|
+
if (this.options.isServer || onlyRequire)
|
|
42
|
+
return require.resolve(relativePath);
|
|
43
|
+
const esm = resolver(relativePath);
|
|
44
|
+
return esm ? import_path.default.join(dir, esm) : require.resolve(relativePath);
|
|
45
|
+
};
|
|
46
|
+
safeResolves = (resolves, multiple = !1) => {
|
|
47
|
+
var _a;
|
|
48
|
+
const res = [];
|
|
49
|
+
for (const [out, mod] of resolves) {
|
|
50
|
+
if (out.endsWith("$")) {
|
|
51
|
+
res.push([out, mod]);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
res.push([out, this.resolveEsm(mod)]), multiple && res.push([out, this.resolveEsm(mod, !0)]);
|
|
56
|
+
} catch (err) {
|
|
57
|
+
if (out.includes("@gorhom/bottom-sheet"))
|
|
58
|
+
continue;
|
|
59
|
+
(_a = process.env.DEBUG) != null && _a.startsWith("tamagui") && console.info(` withTamagui skipping resolving ${out}`, err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return res;
|
|
63
|
+
};
|
|
64
|
+
get componentsFullPaths() {
|
|
65
|
+
return this.safeResolves(
|
|
66
|
+
this.options.components.map(
|
|
67
|
+
(moduleName) => [moduleName, moduleName]
|
|
68
|
+
),
|
|
69
|
+
!0
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
get componentsBaseDirs() {
|
|
73
|
+
return this.componentsFullPaths.map(([_, fullPath]) => {
|
|
74
|
+
let rootPath = (0, import_path.dirname)(fullPath);
|
|
75
|
+
for (; rootPath.length > 1; ) {
|
|
76
|
+
const pkg = (0, import_path.join)(rootPath, "package.json");
|
|
77
|
+
if ((0, import_fs.existsSync)(pkg))
|
|
78
|
+
return rootPath;
|
|
79
|
+
rootPath = (0, import_path.join)(rootPath, "..");
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
isInComponentModule = (fullPath) => this.componentsBaseDirs.some(
|
|
85
|
+
(componentDir) => fullPath.startsWith(componentDir)
|
|
86
|
+
);
|
|
87
|
+
get defaultAliases() {
|
|
88
|
+
return Object.fromEntries(
|
|
89
|
+
this.safeResolves([
|
|
90
|
+
["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
|
|
91
|
+
["@tamagui/core", "@tamagui/core"],
|
|
92
|
+
["@tamagui/web", "@tamagui/web"],
|
|
93
|
+
// web specific light react-native-svg, optional, can use svgs but had issues with compat
|
|
94
|
+
["react-native-svg", "@tamagui/react-native-svg"],
|
|
95
|
+
// fixes https://github.com/kentcdodds/mdx-bundler/issues/143
|
|
96
|
+
["react/jsx-runtime.js", "react/jsx-runtime"],
|
|
97
|
+
["react/jsx-runtime", "react/jsx-runtime"],
|
|
98
|
+
["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
|
|
99
|
+
["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
|
|
100
|
+
["react-native-reanimated", "react-native-reanimated"],
|
|
101
|
+
["react-native$", "react-native-web"],
|
|
102
|
+
["react-native-web$", "react-native-web"],
|
|
103
|
+
["@testing-library/react-native", "@tamagui/proxy-worm"],
|
|
104
|
+
["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
|
|
105
|
+
// fix reanimated 3
|
|
106
|
+
["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"]
|
|
107
|
+
])
|
|
108
|
+
);
|
|
109
|
+
}
|
|
37
110
|
apply(compiler) {
|
|
38
111
|
var _a;
|
|
39
|
-
compiler.watchMode && !this.options.disableWatchConfig && (0, import_static.watchTamaguiConfig)(this.options).then((watcher) => {
|
|
112
|
+
if (compiler.watchMode && !this.options.disableWatchConfig && (0, import_static.watchTamaguiConfig)(this.options).then((watcher) => {
|
|
40
113
|
process.once("exit", () => {
|
|
41
114
|
watcher.dispose();
|
|
42
115
|
});
|
|
43
|
-
}), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
116
|
+
}), this.options.exclude || (this.options.exclude = (path2) => this.isInComponentModule(path2) ? !1 : (0, import_shouldExclude.shouldExclude)(path2)), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
44
117
|
await (0, import_static.loadTamagui)(this.options);
|
|
45
|
-
}),
|
|
118
|
+
}), console.info(
|
|
119
|
+
`
|
|
120
|
+
|
|
121
|
+
Note: the [ignored-bare-import] warning for some Tamagui packages is ignorable, it's an artifact of esbuild that we will eventually find a decent fix for.
|
|
122
|
+
|
|
123
|
+
`
|
|
124
|
+
), compiler.hooks.normalModuleFactory.tap(this.pluginName, (nmf) => {
|
|
46
125
|
nmf.hooks.createModule.tap(
|
|
47
126
|
this.pluginName,
|
|
48
127
|
// @ts-expect-error CreateData is typed as 'object'...
|
|
@@ -51,7 +130,28 @@ class TamaguiPlugin {
|
|
|
51
130
|
(_a2 = createData.matchResource) != null && _a2.endsWith(".tamagui.css") && (createData.settings.sideEffects = !0);
|
|
52
131
|
}
|
|
53
132
|
);
|
|
54
|
-
}), this.options.
|
|
133
|
+
}), !this.options.disableAliases) {
|
|
134
|
+
const existingAlias = compiler.options.resolve.alias;
|
|
135
|
+
Array.isArray(existingAlias) || typeof existingAlias == "object" && Object.assign(existingAlias, this.defaultAliases);
|
|
136
|
+
}
|
|
137
|
+
const excludeExports = this.options.excludeReactNativeWebExports;
|
|
138
|
+
if (excludeExports && Array.isArray(excludeExports))
|
|
139
|
+
try {
|
|
140
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`, regex = new RegExp(regexStr);
|
|
141
|
+
compiler.hooks.environment.tap("MyPlugin", () => {
|
|
142
|
+
new import_webpack.default.NormalModuleReplacementPlugin(
|
|
143
|
+
regex,
|
|
144
|
+
this.resolveEsm("@tamagui/proxy-worm")
|
|
145
|
+
).apply(compiler);
|
|
146
|
+
});
|
|
147
|
+
} catch {
|
|
148
|
+
console.warn(
|
|
149
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(
|
|
150
|
+
", "
|
|
151
|
+
)}`
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
this.options.emitSingleCSSFile && (console.info(" \u27A1 [tamagui] \u{1F3A8} combining css into one file"), compiler.hooks.make.tap(this.pluginName, (compilation) => {
|
|
55
155
|
compilation.hooks.processAssets.tap(this.pluginName, (assets) => {
|
|
56
156
|
try {
|
|
57
157
|
const cssFiles = Object.keys(assets).filter((asset) => asset.endsWith(".css"));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TamaguiPlugin.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["_a"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["buildResolver", "path", "_a", "webpack"]
|
|
6
6
|
}
|
|
@@ -26,7 +26,10 @@ __export(TamaguiPlugin_exports, {
|
|
|
26
26
|
TamaguiPlugin: () => TamaguiPlugin
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(TamaguiPlugin_exports);
|
|
29
|
-
var import_static = require("@tamagui/static");
|
|
29
|
+
var import_fs = require("fs"), import_path = __toESM(require("path")), import_static = require("@tamagui/static"), import_esm_resolve = __toESM(require("esm-resolve")), import_webpack = __toESM(require("webpack")), import_shouldExclude = require("./shouldExclude");
|
|
30
|
+
const dir = __dirname, resolver = (0, import_esm_resolve.default)((0, import_path.join)(dir, "index.js"), {
|
|
31
|
+
constraints: "node"
|
|
32
|
+
});
|
|
30
33
|
class TamaguiPlugin {
|
|
31
34
|
constructor(options = {
|
|
32
35
|
platform: "web",
|
|
@@ -34,16 +37,92 @@ class TamaguiPlugin {
|
|
|
34
37
|
}) {
|
|
35
38
|
this.options = options;
|
|
36
39
|
this.pluginName = "TamaguiPlugin";
|
|
40
|
+
this.resolveEsm = (relativePath, onlyRequire = !1) => {
|
|
41
|
+
if (this.options.isServer || onlyRequire)
|
|
42
|
+
return require.resolve(relativePath);
|
|
43
|
+
const esm = resolver(relativePath);
|
|
44
|
+
return esm ? import_path.default.join(dir, esm) : require.resolve(relativePath);
|
|
45
|
+
};
|
|
46
|
+
this.safeResolves = (resolves, multiple = !1) => {
|
|
47
|
+
var _a;
|
|
48
|
+
const res = [];
|
|
49
|
+
for (const [out, mod] of resolves) {
|
|
50
|
+
if (out.endsWith("$")) {
|
|
51
|
+
res.push([out, mod]);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
res.push([out, this.resolveEsm(mod)]), multiple && res.push([out, this.resolveEsm(mod, !0)]);
|
|
56
|
+
} catch (err) {
|
|
57
|
+
if (out.includes("@gorhom/bottom-sheet"))
|
|
58
|
+
continue;
|
|
59
|
+
(_a = process.env.DEBUG) != null && _a.startsWith("tamagui") && console.info(` withTamagui skipping resolving ${out}`, err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return res;
|
|
63
|
+
};
|
|
64
|
+
this.isInComponentModule = (fullPath) => this.componentsBaseDirs.some(
|
|
65
|
+
(componentDir) => fullPath.startsWith(componentDir)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
get componentsFullPaths() {
|
|
69
|
+
return this.safeResolves(
|
|
70
|
+
this.options.components.map(
|
|
71
|
+
(moduleName) => [moduleName, moduleName]
|
|
72
|
+
),
|
|
73
|
+
!0
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
get componentsBaseDirs() {
|
|
77
|
+
return this.componentsFullPaths.map(([_, fullPath]) => {
|
|
78
|
+
let rootPath = (0, import_path.dirname)(fullPath);
|
|
79
|
+
for (; rootPath.length > 1; ) {
|
|
80
|
+
const pkg = (0, import_path.join)(rootPath, "package.json");
|
|
81
|
+
if ((0, import_fs.existsSync)(pkg))
|
|
82
|
+
return rootPath;
|
|
83
|
+
rootPath = (0, import_path.join)(rootPath, "..");
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
get defaultAliases() {
|
|
89
|
+
return Object.fromEntries(
|
|
90
|
+
this.safeResolves([
|
|
91
|
+
["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
|
|
92
|
+
["@tamagui/core", "@tamagui/core"],
|
|
93
|
+
["@tamagui/web", "@tamagui/web"],
|
|
94
|
+
// web specific light react-native-svg, optional, can use svgs but had issues with compat
|
|
95
|
+
["react-native-svg", "@tamagui/react-native-svg"],
|
|
96
|
+
// fixes https://github.com/kentcdodds/mdx-bundler/issues/143
|
|
97
|
+
["react/jsx-runtime.js", "react/jsx-runtime"],
|
|
98
|
+
["react/jsx-runtime", "react/jsx-runtime"],
|
|
99
|
+
["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
|
|
100
|
+
["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
|
|
101
|
+
["react-native-reanimated", "react-native-reanimated"],
|
|
102
|
+
["react-native$", "react-native-web"],
|
|
103
|
+
["react-native-web$", "react-native-web"],
|
|
104
|
+
["@testing-library/react-native", "@tamagui/proxy-worm"],
|
|
105
|
+
["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
|
|
106
|
+
// fix reanimated 3
|
|
107
|
+
["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"]
|
|
108
|
+
])
|
|
109
|
+
);
|
|
37
110
|
}
|
|
38
111
|
apply(compiler) {
|
|
39
112
|
var _a;
|
|
40
|
-
compiler.watchMode && !this.options.disableWatchConfig && (0, import_static.watchTamaguiConfig)(this.options).then((watcher) => {
|
|
113
|
+
if (compiler.watchMode && !this.options.disableWatchConfig && (0, import_static.watchTamaguiConfig)(this.options).then((watcher) => {
|
|
41
114
|
process.once("exit", () => {
|
|
42
115
|
watcher.dispose();
|
|
43
116
|
});
|
|
44
|
-
}), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
117
|
+
}), this.options.exclude || (this.options.exclude = (path2) => this.isInComponentModule(path2) ? !1 : (0, import_shouldExclude.shouldExclude)(path2)), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
45
118
|
await (0, import_static.loadTamagui)(this.options);
|
|
46
|
-
}),
|
|
119
|
+
}), console.info(
|
|
120
|
+
`
|
|
121
|
+
|
|
122
|
+
Note: the [ignored-bare-import] warning for some Tamagui packages is ignorable, it's an artifact of esbuild that we will eventually find a decent fix for.
|
|
123
|
+
|
|
124
|
+
`
|
|
125
|
+
), compiler.hooks.normalModuleFactory.tap(this.pluginName, (nmf) => {
|
|
47
126
|
nmf.hooks.createModule.tap(
|
|
48
127
|
this.pluginName,
|
|
49
128
|
// @ts-expect-error CreateData is typed as 'object'...
|
|
@@ -52,7 +131,28 @@ class TamaguiPlugin {
|
|
|
52
131
|
(_a2 = createData.matchResource) != null && _a2.endsWith(".tamagui.css") && (createData.settings.sideEffects = !0);
|
|
53
132
|
}
|
|
54
133
|
);
|
|
55
|
-
}), this.options.
|
|
134
|
+
}), !this.options.disableAliases) {
|
|
135
|
+
const existingAlias = compiler.options.resolve.alias;
|
|
136
|
+
Array.isArray(existingAlias) || typeof existingAlias == "object" && Object.assign(existingAlias, this.defaultAliases);
|
|
137
|
+
}
|
|
138
|
+
const excludeExports = this.options.excludeReactNativeWebExports;
|
|
139
|
+
if (excludeExports && Array.isArray(excludeExports))
|
|
140
|
+
try {
|
|
141
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`, regex = new RegExp(regexStr);
|
|
142
|
+
compiler.hooks.environment.tap("MyPlugin", () => {
|
|
143
|
+
new import_webpack.default.NormalModuleReplacementPlugin(
|
|
144
|
+
regex,
|
|
145
|
+
this.resolveEsm("@tamagui/proxy-worm")
|
|
146
|
+
).apply(compiler);
|
|
147
|
+
});
|
|
148
|
+
} catch {
|
|
149
|
+
console.warn(
|
|
150
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(
|
|
151
|
+
", "
|
|
152
|
+
)}`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
this.options.emitSingleCSSFile && (console.info(" \u27A1 [tamagui] \u{1F3A8} combining css into one file"), compiler.hooks.make.tap(this.pluginName, (compilation) => {
|
|
56
156
|
compilation.hooks.processAssets.tap(this.pluginName, (assets) => {
|
|
57
157
|
try {
|
|
58
158
|
const cssFiles = Object.keys(assets).filter((asset) => asset.endsWith(".css"));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TamaguiPlugin.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["_a"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["buildResolver", "path", "_a", "webpack"]
|
|
6
6
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import path, { dirname, join } from "path";
|
|
1
3
|
import {
|
|
2
4
|
loadTamagui,
|
|
3
5
|
minifyCSS,
|
|
4
6
|
watchTamaguiConfig
|
|
5
7
|
} from "@tamagui/static";
|
|
8
|
+
import buildResolver from "esm-resolve";
|
|
9
|
+
import webpack from "webpack";
|
|
10
|
+
import { shouldExclude } from "./shouldExclude";
|
|
11
|
+
const dir = __dirname, resolver = buildResolver(join(dir, "index.js"), {
|
|
12
|
+
constraints: "node"
|
|
13
|
+
});
|
|
6
14
|
class TamaguiPlugin {
|
|
7
15
|
constructor(options = {
|
|
8
16
|
platform: "web",
|
|
@@ -11,14 +19,89 @@ class TamaguiPlugin {
|
|
|
11
19
|
this.options = options;
|
|
12
20
|
}
|
|
13
21
|
pluginName = "TamaguiPlugin";
|
|
22
|
+
resolveEsm = (relativePath, onlyRequire = !1) => {
|
|
23
|
+
if (this.options.isServer || onlyRequire)
|
|
24
|
+
return require.resolve(relativePath);
|
|
25
|
+
const esm = resolver(relativePath);
|
|
26
|
+
return esm ? path.join(dir, esm) : require.resolve(relativePath);
|
|
27
|
+
};
|
|
28
|
+
safeResolves = (resolves, multiple = !1) => {
|
|
29
|
+
const res = [];
|
|
30
|
+
for (const [out, mod] of resolves) {
|
|
31
|
+
if (out.endsWith("$")) {
|
|
32
|
+
res.push([out, mod]);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
res.push([out, this.resolveEsm(mod)]), multiple && res.push([out, this.resolveEsm(mod, !0)]);
|
|
37
|
+
} catch (err) {
|
|
38
|
+
if (out.includes("@gorhom/bottom-sheet"))
|
|
39
|
+
continue;
|
|
40
|
+
process.env.DEBUG?.startsWith("tamagui") && console.info(` withTamagui skipping resolving ${out}`, err);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return res;
|
|
44
|
+
};
|
|
45
|
+
get componentsFullPaths() {
|
|
46
|
+
return this.safeResolves(
|
|
47
|
+
this.options.components.map(
|
|
48
|
+
(moduleName) => [moduleName, moduleName]
|
|
49
|
+
),
|
|
50
|
+
!0
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
get componentsBaseDirs() {
|
|
54
|
+
return this.componentsFullPaths.map(([_, fullPath]) => {
|
|
55
|
+
let rootPath = dirname(fullPath);
|
|
56
|
+
for (; rootPath.length > 1; ) {
|
|
57
|
+
const pkg = join(rootPath, "package.json");
|
|
58
|
+
if (existsSync(pkg))
|
|
59
|
+
return rootPath;
|
|
60
|
+
rootPath = join(rootPath, "..");
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
isInComponentModule = (fullPath) => this.componentsBaseDirs.some(
|
|
66
|
+
(componentDir) => fullPath.startsWith(componentDir)
|
|
67
|
+
);
|
|
68
|
+
get defaultAliases() {
|
|
69
|
+
return Object.fromEntries(
|
|
70
|
+
this.safeResolves([
|
|
71
|
+
["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
|
|
72
|
+
["@tamagui/core", "@tamagui/core"],
|
|
73
|
+
["@tamagui/web", "@tamagui/web"],
|
|
74
|
+
// web specific light react-native-svg, optional, can use svgs but had issues with compat
|
|
75
|
+
["react-native-svg", "@tamagui/react-native-svg"],
|
|
76
|
+
// fixes https://github.com/kentcdodds/mdx-bundler/issues/143
|
|
77
|
+
["react/jsx-runtime.js", "react/jsx-runtime"],
|
|
78
|
+
["react/jsx-runtime", "react/jsx-runtime"],
|
|
79
|
+
["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
|
|
80
|
+
["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
|
|
81
|
+
["react-native-reanimated", "react-native-reanimated"],
|
|
82
|
+
["react-native$", "react-native-web"],
|
|
83
|
+
["react-native-web$", "react-native-web"],
|
|
84
|
+
["@testing-library/react-native", "@tamagui/proxy-worm"],
|
|
85
|
+
["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
|
|
86
|
+
// fix reanimated 3
|
|
87
|
+
["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"]
|
|
88
|
+
])
|
|
89
|
+
);
|
|
90
|
+
}
|
|
14
91
|
apply(compiler) {
|
|
15
|
-
compiler.watchMode && !this.options.disableWatchConfig && watchTamaguiConfig(this.options).then((watcher) => {
|
|
92
|
+
if (compiler.watchMode && !this.options.disableWatchConfig && watchTamaguiConfig(this.options).then((watcher) => {
|
|
16
93
|
process.once("exit", () => {
|
|
17
94
|
watcher.dispose();
|
|
18
95
|
});
|
|
19
|
-
}), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
96
|
+
}), this.options.exclude || (this.options.exclude = (path2) => this.isInComponentModule(path2) ? !1 : shouldExclude(path2)), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
20
97
|
await loadTamagui(this.options);
|
|
21
|
-
}),
|
|
98
|
+
}), console.info(
|
|
99
|
+
`
|
|
100
|
+
|
|
101
|
+
Note: the [ignored-bare-import] warning for some Tamagui packages is ignorable, it's an artifact of esbuild that we will eventually find a decent fix for.
|
|
102
|
+
|
|
103
|
+
`
|
|
104
|
+
), compiler.hooks.normalModuleFactory.tap(this.pluginName, (nmf) => {
|
|
22
105
|
nmf.hooks.createModule.tap(
|
|
23
106
|
this.pluginName,
|
|
24
107
|
// @ts-expect-error CreateData is typed as 'object'...
|
|
@@ -26,7 +109,28 @@ class TamaguiPlugin {
|
|
|
26
109
|
createData.matchResource?.endsWith(".tamagui.css") && (createData.settings.sideEffects = !0);
|
|
27
110
|
}
|
|
28
111
|
);
|
|
29
|
-
}), this.options.
|
|
112
|
+
}), !this.options.disableAliases) {
|
|
113
|
+
const existingAlias = compiler.options.resolve.alias;
|
|
114
|
+
Array.isArray(existingAlias) || typeof existingAlias == "object" && Object.assign(existingAlias, this.defaultAliases);
|
|
115
|
+
}
|
|
116
|
+
const excludeExports = this.options.excludeReactNativeWebExports;
|
|
117
|
+
if (excludeExports && Array.isArray(excludeExports))
|
|
118
|
+
try {
|
|
119
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`, regex = new RegExp(regexStr);
|
|
120
|
+
compiler.hooks.environment.tap("MyPlugin", () => {
|
|
121
|
+
new webpack.NormalModuleReplacementPlugin(
|
|
122
|
+
regex,
|
|
123
|
+
this.resolveEsm("@tamagui/proxy-worm")
|
|
124
|
+
).apply(compiler);
|
|
125
|
+
});
|
|
126
|
+
} catch {
|
|
127
|
+
console.warn(
|
|
128
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(
|
|
129
|
+
", "
|
|
130
|
+
)}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
this.options.emitSingleCSSFile && (console.info(" \u27A1 [tamagui] \u{1F3A8} combining css into one file"), compiler.hooks.make.tap(this.pluginName, (compilation) => {
|
|
30
134
|
compilation.hooks.processAssets.tap(this.pluginName, (assets) => {
|
|
31
135
|
try {
|
|
32
136
|
const cssFiles = Object.keys(assets).filter((asset) => asset.endsWith(".css"));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TamaguiPlugin.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["path"]
|
|
6
6
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import path, { dirname, join } from "path";
|
|
1
3
|
import {
|
|
2
4
|
loadTamagui,
|
|
3
5
|
minifyCSS,
|
|
4
6
|
watchTamaguiConfig
|
|
5
7
|
} from "@tamagui/static";
|
|
8
|
+
import buildResolver from "esm-resolve";
|
|
9
|
+
import webpack from "webpack";
|
|
10
|
+
import { shouldExclude } from "./shouldExclude";
|
|
11
|
+
const dir = __dirname, resolver = buildResolver(join(dir, "index.js"), {
|
|
12
|
+
constraints: "node"
|
|
13
|
+
});
|
|
6
14
|
class TamaguiPlugin {
|
|
7
15
|
constructor(options = {
|
|
8
16
|
platform: "web",
|
|
@@ -10,15 +18,90 @@ class TamaguiPlugin {
|
|
|
10
18
|
}) {
|
|
11
19
|
this.options = options;
|
|
12
20
|
this.pluginName = "TamaguiPlugin";
|
|
21
|
+
this.resolveEsm = (relativePath, onlyRequire = !1) => {
|
|
22
|
+
if (this.options.isServer || onlyRequire)
|
|
23
|
+
return require.resolve(relativePath);
|
|
24
|
+
const esm = resolver(relativePath);
|
|
25
|
+
return esm ? path.join(dir, esm) : require.resolve(relativePath);
|
|
26
|
+
};
|
|
27
|
+
this.safeResolves = (resolves, multiple = !1) => {
|
|
28
|
+
const res = [];
|
|
29
|
+
for (const [out, mod] of resolves) {
|
|
30
|
+
if (out.endsWith("$")) {
|
|
31
|
+
res.push([out, mod]);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
res.push([out, this.resolveEsm(mod)]), multiple && res.push([out, this.resolveEsm(mod, !0)]);
|
|
36
|
+
} catch (err) {
|
|
37
|
+
if (out.includes("@gorhom/bottom-sheet"))
|
|
38
|
+
continue;
|
|
39
|
+
process.env.DEBUG?.startsWith("tamagui") && console.info(` withTamagui skipping resolving ${out}`, err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return res;
|
|
43
|
+
};
|
|
44
|
+
this.isInComponentModule = (fullPath) => this.componentsBaseDirs.some(
|
|
45
|
+
(componentDir) => fullPath.startsWith(componentDir)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
get componentsFullPaths() {
|
|
49
|
+
return this.safeResolves(
|
|
50
|
+
this.options.components.map(
|
|
51
|
+
(moduleName) => [moduleName, moduleName]
|
|
52
|
+
),
|
|
53
|
+
!0
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
get componentsBaseDirs() {
|
|
57
|
+
return this.componentsFullPaths.map(([_, fullPath]) => {
|
|
58
|
+
let rootPath = dirname(fullPath);
|
|
59
|
+
for (; rootPath.length > 1; ) {
|
|
60
|
+
const pkg = join(rootPath, "package.json");
|
|
61
|
+
if (existsSync(pkg))
|
|
62
|
+
return rootPath;
|
|
63
|
+
rootPath = join(rootPath, "..");
|
|
64
|
+
}
|
|
65
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
get defaultAliases() {
|
|
69
|
+
return Object.fromEntries(
|
|
70
|
+
this.safeResolves([
|
|
71
|
+
["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
|
|
72
|
+
["@tamagui/core", "@tamagui/core"],
|
|
73
|
+
["@tamagui/web", "@tamagui/web"],
|
|
74
|
+
// web specific light react-native-svg, optional, can use svgs but had issues with compat
|
|
75
|
+
["react-native-svg", "@tamagui/react-native-svg"],
|
|
76
|
+
// fixes https://github.com/kentcdodds/mdx-bundler/issues/143
|
|
77
|
+
["react/jsx-runtime.js", "react/jsx-runtime"],
|
|
78
|
+
["react/jsx-runtime", "react/jsx-runtime"],
|
|
79
|
+
["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
|
|
80
|
+
["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
|
|
81
|
+
["react-native-reanimated", "react-native-reanimated"],
|
|
82
|
+
["react-native$", "react-native-web"],
|
|
83
|
+
["react-native-web$", "react-native-web"],
|
|
84
|
+
["@testing-library/react-native", "@tamagui/proxy-worm"],
|
|
85
|
+
["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
|
|
86
|
+
// fix reanimated 3
|
|
87
|
+
["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"]
|
|
88
|
+
])
|
|
89
|
+
);
|
|
13
90
|
}
|
|
14
91
|
apply(compiler) {
|
|
15
|
-
compiler.watchMode && !this.options.disableWatchConfig && watchTamaguiConfig(this.options).then((watcher) => {
|
|
92
|
+
if (compiler.watchMode && !this.options.disableWatchConfig && watchTamaguiConfig(this.options).then((watcher) => {
|
|
16
93
|
process.once("exit", () => {
|
|
17
94
|
watcher.dispose();
|
|
18
95
|
});
|
|
19
|
-
}), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
96
|
+
}), this.options.exclude || (this.options.exclude = (path2) => this.isInComponentModule(path2) ? !1 : shouldExclude(path2)), compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
20
97
|
await loadTamagui(this.options);
|
|
21
|
-
}),
|
|
98
|
+
}), console.info(
|
|
99
|
+
`
|
|
100
|
+
|
|
101
|
+
Note: the [ignored-bare-import] warning for some Tamagui packages is ignorable, it's an artifact of esbuild that we will eventually find a decent fix for.
|
|
102
|
+
|
|
103
|
+
`
|
|
104
|
+
), compiler.hooks.normalModuleFactory.tap(this.pluginName, (nmf) => {
|
|
22
105
|
nmf.hooks.createModule.tap(
|
|
23
106
|
this.pluginName,
|
|
24
107
|
// @ts-expect-error CreateData is typed as 'object'...
|
|
@@ -26,7 +109,28 @@ class TamaguiPlugin {
|
|
|
26
109
|
createData.matchResource?.endsWith(".tamagui.css") && (createData.settings.sideEffects = !0);
|
|
27
110
|
}
|
|
28
111
|
);
|
|
29
|
-
}), this.options.
|
|
112
|
+
}), !this.options.disableAliases) {
|
|
113
|
+
const existingAlias = compiler.options.resolve.alias;
|
|
114
|
+
Array.isArray(existingAlias) || typeof existingAlias == "object" && Object.assign(existingAlias, this.defaultAliases);
|
|
115
|
+
}
|
|
116
|
+
const excludeExports = this.options.excludeReactNativeWebExports;
|
|
117
|
+
if (excludeExports && Array.isArray(excludeExports))
|
|
118
|
+
try {
|
|
119
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`, regex = new RegExp(regexStr);
|
|
120
|
+
compiler.hooks.environment.tap("MyPlugin", () => {
|
|
121
|
+
new webpack.NormalModuleReplacementPlugin(
|
|
122
|
+
regex,
|
|
123
|
+
this.resolveEsm("@tamagui/proxy-worm")
|
|
124
|
+
).apply(compiler);
|
|
125
|
+
});
|
|
126
|
+
} catch {
|
|
127
|
+
console.warn(
|
|
128
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(
|
|
129
|
+
", "
|
|
130
|
+
)}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
this.options.emitSingleCSSFile && (console.info(" \u27A1 [tamagui] \u{1F3A8} combining css into one file"), compiler.hooks.make.tap(this.pluginName, (compilation) => {
|
|
30
134
|
compilation.hooks.processAssets.tap(this.pluginName, (assets) => {
|
|
31
135
|
try {
|
|
32
136
|
const cssFiles = Object.keys(assets).filter((asset) => asset.endsWith(".css"));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/TamaguiPlugin.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["path"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tamagui-loader",
|
|
3
|
-
"version": "1.82.
|
|
3
|
+
"version": "1.82.9",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -18,15 +18,18 @@
|
|
|
18
18
|
"clean:build": "tamagui-build clean:build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@tamagui/cli-color": "1.82.
|
|
22
|
-
"@tamagui/
|
|
21
|
+
"@tamagui/cli-color": "1.82.9",
|
|
22
|
+
"@tamagui/core": "1.82.9",
|
|
23
|
+
"@tamagui/static": "1.82.9",
|
|
24
|
+
"@tamagui/web": "1.82.9",
|
|
23
25
|
"esbuild-loader": "^3.0.1",
|
|
26
|
+
"esm-resolve": "^1.0.8",
|
|
24
27
|
"fs-extra": "^11.1.0",
|
|
25
28
|
"loader-utils": "^3.2.1",
|
|
26
29
|
"lodash": "^4.17.21"
|
|
27
30
|
},
|
|
28
31
|
"devDependencies": {
|
|
29
|
-
"@tamagui/build": "1.82.
|
|
32
|
+
"@tamagui/build": "1.82.9",
|
|
30
33
|
"prettyjson": "^1.2.5",
|
|
31
34
|
"webpack": "^5.88.2"
|
|
32
35
|
},
|
package/src/TamaguiPlugin.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import { existsSync } from 'fs'
|
|
2
|
+
import path, { dirname, join } from 'path'
|
|
3
|
+
|
|
1
4
|
import {
|
|
2
5
|
TamaguiOptions,
|
|
3
6
|
loadTamagui,
|
|
4
7
|
minifyCSS,
|
|
5
8
|
watchTamaguiConfig,
|
|
6
9
|
} from '@tamagui/static'
|
|
10
|
+
import buildResolver from 'esm-resolve'
|
|
7
11
|
import type { Compiler, RuleSetRule } from 'webpack'
|
|
12
|
+
import webpack from 'webpack'
|
|
13
|
+
|
|
14
|
+
import { shouldExclude } from './shouldExclude'
|
|
8
15
|
|
|
9
16
|
export type PluginOptions = TamaguiOptions & {
|
|
10
17
|
isServer?: boolean
|
|
@@ -15,8 +22,14 @@ export type PluginOptions = TamaguiOptions & {
|
|
|
15
22
|
disableEsbuildLoader?: boolean
|
|
16
23
|
disableModuleJSXEntry?: boolean
|
|
17
24
|
disableWatchConfig?: boolean
|
|
25
|
+
disableAliases?: boolean
|
|
18
26
|
}
|
|
19
27
|
|
|
28
|
+
const dir = __dirname
|
|
29
|
+
const resolver = buildResolver(join(dir, 'index.js'), {
|
|
30
|
+
constraints: 'node',
|
|
31
|
+
})
|
|
32
|
+
|
|
20
33
|
export class TamaguiPlugin {
|
|
21
34
|
pluginName = 'TamaguiPlugin'
|
|
22
35
|
|
|
@@ -27,6 +40,93 @@ export class TamaguiPlugin {
|
|
|
27
40
|
}
|
|
28
41
|
) {}
|
|
29
42
|
|
|
43
|
+
resolveEsm = (relativePath: string, onlyRequire = false) => {
|
|
44
|
+
if (this.options.isServer || onlyRequire) {
|
|
45
|
+
return require.resolve(relativePath)
|
|
46
|
+
}
|
|
47
|
+
const esm = resolver(relativePath)
|
|
48
|
+
return esm ? path.join(dir, esm) : require.resolve(relativePath)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
safeResolves = (resolves: [string, string][], multiple = false) => {
|
|
52
|
+
const res: string[][] = []
|
|
53
|
+
for (const [out, mod] of resolves) {
|
|
54
|
+
if (out.endsWith('$')) {
|
|
55
|
+
res.push([out, mod])
|
|
56
|
+
continue
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
res.push([out, this.resolveEsm(mod)])
|
|
60
|
+
if (multiple) {
|
|
61
|
+
res.push([out, this.resolveEsm(mod, true)])
|
|
62
|
+
}
|
|
63
|
+
} catch (err) {
|
|
64
|
+
if (out.includes(`@gorhom/bottom-sheet`)) {
|
|
65
|
+
continue
|
|
66
|
+
}
|
|
67
|
+
if (process.env.DEBUG?.startsWith('tamagui')) {
|
|
68
|
+
console.info(` withTamagui skipping resolving ${out}`, err)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return res
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
get componentsFullPaths() {
|
|
76
|
+
return this.safeResolves(
|
|
77
|
+
this.options.components.map(
|
|
78
|
+
(moduleName) => [moduleName, moduleName] as [string, string]
|
|
79
|
+
),
|
|
80
|
+
true
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
get componentsBaseDirs() {
|
|
85
|
+
return this.componentsFullPaths.map(([_, fullPath]) => {
|
|
86
|
+
let rootPath = dirname(fullPath as string)
|
|
87
|
+
while (rootPath.length > 1) {
|
|
88
|
+
const pkg = join(rootPath, 'package.json')
|
|
89
|
+
const hasPkg = existsSync(pkg)
|
|
90
|
+
if (hasPkg) {
|
|
91
|
+
return rootPath
|
|
92
|
+
} else {
|
|
93
|
+
rootPath = join(rootPath, '..')
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`)
|
|
97
|
+
})
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
isInComponentModule = (fullPath: string) => {
|
|
101
|
+
return this.componentsBaseDirs.some((componentDir) =>
|
|
102
|
+
fullPath.startsWith(componentDir)
|
|
103
|
+
)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
get defaultAliases() {
|
|
107
|
+
return Object.fromEntries(
|
|
108
|
+
this.safeResolves([
|
|
109
|
+
['@tamagui/core/reset.css', '@tamagui/core/reset.css'],
|
|
110
|
+
['@tamagui/core', '@tamagui/core'],
|
|
111
|
+
['@tamagui/web', '@tamagui/web'],
|
|
112
|
+
// web specific light react-native-svg, optional, can use svgs but had issues with compat
|
|
113
|
+
['react-native-svg', '@tamagui/react-native-svg'],
|
|
114
|
+
// fixes https://github.com/kentcdodds/mdx-bundler/issues/143
|
|
115
|
+
['react/jsx-runtime.js', 'react/jsx-runtime'],
|
|
116
|
+
['react/jsx-runtime', 'react/jsx-runtime'],
|
|
117
|
+
['react/jsx-dev-runtime.js', 'react/jsx-dev-runtime'],
|
|
118
|
+
['react/jsx-dev-runtime', 'react/jsx-dev-runtime'],
|
|
119
|
+
['react-native-reanimated', 'react-native-reanimated'],
|
|
120
|
+
['react-native$', 'react-native-web'],
|
|
121
|
+
['react-native-web$', 'react-native-web'],
|
|
122
|
+
['@testing-library/react-native', '@tamagui/proxy-worm'],
|
|
123
|
+
['@gorhom/bottom-sheet$', '@gorhom/bottom-sheet'],
|
|
124
|
+
// fix reanimated 3
|
|
125
|
+
['react-native/Libraries/Renderer/shims/ReactFabric', '@tamagui/proxy-worm'],
|
|
126
|
+
])
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
|
|
30
130
|
apply(compiler: Compiler) {
|
|
31
131
|
if (compiler.watchMode && !this.options.disableWatchConfig) {
|
|
32
132
|
void watchTamaguiConfig(this.options).then((watcher) => {
|
|
@@ -37,10 +137,24 @@ export class TamaguiPlugin {
|
|
|
37
137
|
})
|
|
38
138
|
}
|
|
39
139
|
|
|
140
|
+
if (!this.options.exclude) {
|
|
141
|
+
// default to running if in component module, otherwise falling back the jsx dir heuristics
|
|
142
|
+
this.options.exclude = (path) => {
|
|
143
|
+
if (this.isInComponentModule(path)) {
|
|
144
|
+
return false
|
|
145
|
+
}
|
|
146
|
+
return shouldExclude(path)
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
40
150
|
compiler.hooks.beforeRun.tapPromise(this.pluginName, async () => {
|
|
41
151
|
await loadTamagui(this.options)
|
|
42
152
|
})
|
|
43
153
|
|
|
154
|
+
console.info(
|
|
155
|
+
`\n\nNote: the [ignored-bare-import] warning for some Tamagui packages is ignorable, it's an artifact of esbuild that we will eventually find a decent fix for.\n\n`
|
|
156
|
+
)
|
|
157
|
+
|
|
44
158
|
// mark as side effect
|
|
45
159
|
compiler.hooks.normalModuleFactory.tap(this.pluginName, (nmf) => {
|
|
46
160
|
nmf.hooks.createModule.tap(
|
|
@@ -54,6 +168,43 @@ export class TamaguiPlugin {
|
|
|
54
168
|
)
|
|
55
169
|
})
|
|
56
170
|
|
|
171
|
+
// default exclude definition
|
|
172
|
+
if (!this.options.disableAliases) {
|
|
173
|
+
const existingAlias = compiler.options.resolve.alias
|
|
174
|
+
if (Array.isArray(existingAlias)) {
|
|
175
|
+
//
|
|
176
|
+
} else if (typeof existingAlias === 'object') {
|
|
177
|
+
Object.assign(existingAlias, this.defaultAliases)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// explude react native web exports:
|
|
182
|
+
const excludeExports = this.options.excludeReactNativeWebExports
|
|
183
|
+
if (excludeExports) {
|
|
184
|
+
if (Array.isArray(excludeExports)) {
|
|
185
|
+
try {
|
|
186
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join('|')}).*js`
|
|
187
|
+
const regex = new RegExp(regexStr)
|
|
188
|
+
|
|
189
|
+
compiler.hooks.environment.tap('MyPlugin', () => {
|
|
190
|
+
// Here you create a new instance of the plugin you want to add
|
|
191
|
+
const definePlugin = new webpack.NormalModuleReplacementPlugin(
|
|
192
|
+
regex,
|
|
193
|
+
this.resolveEsm('@tamagui/proxy-worm')
|
|
194
|
+
)
|
|
195
|
+
// Manually apply the plugin to the compiler
|
|
196
|
+
definePlugin.apply(compiler)
|
|
197
|
+
})
|
|
198
|
+
} catch (err) {
|
|
199
|
+
console.warn(
|
|
200
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(
|
|
201
|
+
', '
|
|
202
|
+
)}`
|
|
203
|
+
)
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
57
208
|
if (this.options.emitSingleCSSFile) {
|
|
58
209
|
console.info(` ➡ [tamagui] 🎨 combining css into one file`)
|
|
59
210
|
|
package/types/TamaguiPlugin.d.ts
CHANGED
|
@@ -9,11 +9,18 @@ export type PluginOptions = TamaguiOptions & {
|
|
|
9
9
|
disableEsbuildLoader?: boolean;
|
|
10
10
|
disableModuleJSXEntry?: boolean;
|
|
11
11
|
disableWatchConfig?: boolean;
|
|
12
|
+
disableAliases?: boolean;
|
|
12
13
|
};
|
|
13
14
|
export declare class TamaguiPlugin {
|
|
14
15
|
options: PluginOptions;
|
|
15
16
|
pluginName: string;
|
|
16
17
|
constructor(options?: PluginOptions);
|
|
18
|
+
resolveEsm: (relativePath: string, onlyRequire?: boolean) => string;
|
|
19
|
+
safeResolves: (resolves: [string, string][], multiple?: boolean) => string[][];
|
|
20
|
+
get componentsFullPaths(): string[][];
|
|
21
|
+
get componentsBaseDirs(): string[];
|
|
22
|
+
isInComponentModule: (fullPath: string) => boolean;
|
|
23
|
+
get defaultAliases(): any;
|
|
17
24
|
apply(compiler: Compiler): void;
|
|
18
25
|
}
|
|
19
26
|
//# sourceMappingURL=TamaguiPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TamaguiPlugin.d.ts","sourceRoot":"","sources":["../src/TamaguiPlugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TamaguiPlugin.d.ts","sourceRoot":"","sources":["../src/TamaguiPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EAIf,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAKpD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAOD,qBAAa,aAAa;IAIf,OAAO,EAAE,aAAa;IAH/B,UAAU,SAAkB;gBAGnB,OAAO,GAAE,aAGf;IAGH,UAAU,iBAAkB,MAAM,mCAMjC;IAED,YAAY,aAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,oCAsB3C;IAED,IAAI,mBAAmB,eAOtB;IAED,IAAI,kBAAkB,aAcrB;IAED,mBAAmB,aAAc,MAAM,aAItC;IAED,IAAI,cAAc,QAsBjB;IAED,KAAK,CAAC,QAAQ,EAAE,QAAQ;CA0NzB"}
|