@tamagui/next-plugin 1.0.0-alpha.5 → 1.0.0-alpha.50
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/index.js +22 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/{index.cjs → cjs/withTamagui.js} +92 -53
- package/dist/cjs/withTamagui.js.map +7 -0
- package/dist/{index.js → esm/index.js} +0 -0
- package/dist/{index.js.map → esm/index.js.map} +1 -1
- package/dist/{withTamagui.js → esm/withTamagui.js} +74 -37
- package/dist/esm/withTamagui.js.map +7 -0
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/withTamagui.js +191 -0
- package/package.json +19 -14
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -0
- package/types/withTamagui.d.ts +3 -0
- package/types/withTamagui.d.ts.map +1 -0
- package/dist/index.cjs.map +0 -7
- package/dist/withTamagui.js.map +0 -7
- package/src/index.ts +0 -1
- package/src/withTamagui.ts +0 -206
- package/types.d.ts +0 -18
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
6
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
7
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(module2))
|
|
9
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
10
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return target;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
15
|
+
return (module2, temp) => {
|
|
16
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
17
|
+
};
|
|
18
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
19
|
+
var src_exports = {};
|
|
20
|
+
__reExport(src_exports, require("./withTamagui"));
|
|
21
|
+
module.exports = __toCommonJS(src_exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -24,41 +24,52 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
|
24
24
|
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
25
25
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
26
26
|
var __export = (target, all) => {
|
|
27
|
-
__markAsModule(target);
|
|
28
27
|
for (var name in all)
|
|
29
28
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
30
29
|
};
|
|
31
|
-
var __reExport = (target, module2, desc) => {
|
|
30
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
32
31
|
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
33
32
|
for (let key of __getOwnPropNames(module2))
|
|
34
|
-
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
33
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
35
34
|
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
36
35
|
}
|
|
37
36
|
return target;
|
|
38
37
|
};
|
|
39
|
-
var
|
|
40
|
-
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default",
|
|
38
|
+
var __toESM = (module2, isNodeMode) => {
|
|
39
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
41
40
|
};
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
42
|
+
return (module2, temp) => {
|
|
43
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
44
|
+
};
|
|
45
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
46
|
+
var withTamagui_exports = {};
|
|
47
|
+
__export(withTamagui_exports, {
|
|
45
48
|
withTamagui: () => withTamagui
|
|
46
49
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
var
|
|
50
|
+
var import_path = __toESM(require("path"));
|
|
51
|
+
var import_browserslist = __toESM(require("browserslist"));
|
|
52
|
+
var import_css_minimizer_webpack_plugin = __toESM(require("css-minimizer-webpack-plugin"));
|
|
53
|
+
var import_css = require("next/dist/build/webpack/config/blocks/css");
|
|
54
|
+
var import_loaders = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
55
|
+
var import_webpack = __toESM(require("webpack"));
|
|
56
|
+
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
53
57
|
return (nextConfig = {}) => {
|
|
54
58
|
return Object.assign({}, nextConfig, {
|
|
55
59
|
webpack: (webpackConfig, options) => {
|
|
56
|
-
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const { dir, config, dev, isServer } = options;
|
|
62
|
+
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
63
|
+
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
64
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
65
|
+
const rnw = require.resolve("react-native-web");
|
|
57
66
|
webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, webpackConfig.resolve.alias || {}), {
|
|
58
|
-
"react-
|
|
67
|
+
"react/jsx-runtime.js": jsxRuntime,
|
|
68
|
+
"react/jsx-runtime": jsxRuntime,
|
|
69
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
70
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
71
|
+
"react-native$": rnw,
|
|
59
72
|
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
60
|
-
"react/jsx-runtime": require.resolve("react/jsx-runtime"),
|
|
61
|
-
"react/jsx-dev-runtime": require.resolve("react/jsx-dev-runtime"),
|
|
62
73
|
react: require.resolve("react"),
|
|
63
74
|
"react-dom": require.resolve("react-dom")
|
|
64
75
|
});
|
|
@@ -79,7 +90,7 @@ var withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
79
90
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
80
91
|
}
|
|
81
92
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
82
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
|
|
93
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
83
94
|
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
84
95
|
const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
|
|
85
96
|
if (/^\@?react-native-/.test(request)) {
|
|
@@ -128,64 +139,79 @@ var withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
128
139
|
if (oneOfRule) {
|
|
129
140
|
if (!dev) {
|
|
130
141
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
131
|
-
oneOfRule.oneOf
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
];
|
|
142
|
+
oneOfRule.oneOf.unshift({
|
|
143
|
+
test: /\.css$/i,
|
|
144
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
145
|
+
sideEffects: true
|
|
146
|
+
});
|
|
138
147
|
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
139
148
|
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
140
149
|
filename: "static/css/[name].[contenthash].css",
|
|
141
150
|
ignoreOrder: true
|
|
142
151
|
}));
|
|
143
152
|
} else {
|
|
144
|
-
const {
|
|
145
|
-
getGlobalCssLoader
|
|
146
|
-
} = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
147
153
|
oneOfRule.oneOf.unshift({
|
|
148
154
|
test: /\.css$/i,
|
|
149
155
|
sideEffects: true,
|
|
150
|
-
use: getGlobalCssLoader({
|
|
151
|
-
assetPrefix: options.config.assetPrefix,
|
|
152
|
-
future:
|
|
156
|
+
use: (0, import_loaders.getGlobalCssLoader)({
|
|
157
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
158
|
+
future: nextConfig.future,
|
|
159
|
+
experimental: nextConfig.experimental || {},
|
|
153
160
|
isClient: !isServer,
|
|
154
161
|
isServer,
|
|
155
162
|
isDevelopment: true
|
|
156
|
-
},
|
|
163
|
+
}, () => (0, import_css.lazyPostCSS)(dir, getSupportedBrowsers(dir, dev)), [])
|
|
157
164
|
});
|
|
158
165
|
}
|
|
159
166
|
}
|
|
160
167
|
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
161
|
-
|
|
162
|
-
|
|
168
|
+
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
169
|
+
if (!shouldInclude) {
|
|
170
|
+
return true;
|
|
163
171
|
}
|
|
164
|
-
return
|
|
172
|
+
return false;
|
|
165
173
|
}, "shouldExclude");
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
{
|
|
171
|
-
test: /\.(tsx
|
|
174
|
+
if (isNext12) {
|
|
175
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
176
|
+
const swcLoaderIndex = 3;
|
|
177
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
178
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
179
|
+
test: /\.(jsx?|tsx?)$/,
|
|
172
180
|
exclude: shouldExclude,
|
|
173
181
|
use: [
|
|
174
|
-
|
|
175
|
-
loader: "esbuild-loader",
|
|
176
|
-
options: {
|
|
177
|
-
loader: "tsx",
|
|
178
|
-
minify: false
|
|
179
|
-
}
|
|
180
|
-
},
|
|
182
|
+
...[].concat(swcLoader.use),
|
|
181
183
|
{
|
|
182
184
|
loader: "tamagui-loader",
|
|
183
185
|
options: tamaguiOptions
|
|
184
186
|
}
|
|
185
187
|
]
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
});
|
|
189
|
+
} else {
|
|
190
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
191
|
+
webpackConfig.module.rules = [
|
|
192
|
+
first,
|
|
193
|
+
second,
|
|
194
|
+
{
|
|
195
|
+
test: /\.(tsx|jsx)$/,
|
|
196
|
+
exclude: shouldExclude,
|
|
197
|
+
use: [
|
|
198
|
+
"thread-loader",
|
|
199
|
+
{
|
|
200
|
+
loader: "esbuild-loader",
|
|
201
|
+
options: {
|
|
202
|
+
loader: "tsx",
|
|
203
|
+
minify: false
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
loader: "tamagui-loader",
|
|
208
|
+
options: tamaguiOptions
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
...rest
|
|
213
|
+
];
|
|
214
|
+
}
|
|
189
215
|
if (typeof nextConfig.webpack === "function") {
|
|
190
216
|
return nextConfig.webpack(webpackConfig, options);
|
|
191
217
|
}
|
|
@@ -194,4 +220,17 @@ var withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
194
220
|
});
|
|
195
221
|
};
|
|
196
222
|
}, "withTamagui");
|
|
197
|
-
|
|
223
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
224
|
+
let browsers;
|
|
225
|
+
try {
|
|
226
|
+
browsers = import_browserslist.default.loadConfig({
|
|
227
|
+
path: dir,
|
|
228
|
+
env: isDevelopment ? "development" : "production"
|
|
229
|
+
});
|
|
230
|
+
} catch {
|
|
231
|
+
}
|
|
232
|
+
return browsers;
|
|
233
|
+
}
|
|
234
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
235
|
+
module.exports = __toCommonJS(withTamagui_exports);
|
|
236
|
+
//# sourceMappingURL=withTamagui.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/withTamagui.ts"],
|
|
4
|
+
"sourcesContent": ["import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport { lazyPostCSS } from 'next/dist/build/webpack/config/blocks/css'\nimport { getGlobalCssLoader } from 'next/dist/build/webpack/config/blocks/css/loaders'\nimport webpack from 'webpack'\n\nexport const withTamagui = (tamaguiOptions: TamaguiOptions) => {\n return (nextConfig: any = {}) => {\n return Object.assign({}, nextConfig, {\n webpack: (webpackConfig: any, options) => {\n const { dir, config, dev, isServer } = options\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime.js')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime.js')\n const rnw = require.resolve('react-native-web')\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\n 'react/jsx-dev-runtime.js': jsxDevRuntime,\n 'react/jsx-dev-runtime': jsxDevRuntime,\n 'react-native$': rnw,\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n react: require.resolve('react'),\n 'react-dom': require.resolve('react-dom'),\n }\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n })\n )\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n console.log('ignoring tsconfig paths, they mess up transpile')\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n const isWebpack5 = !!config.future?.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n if (isWebpack5) {\n return (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n })\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n // @ts-ignore\n {\n assetPrefix: options.config.assetPrefix || config.assetPrefix,\n future: nextConfig.future,\n experimental: nextConfig.experimental || {},\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n ),\n })\n }\n }\n\n // add loader\n const shouldExclude = (x) => {\n // analyze everything in our jsx dir\n // analyze everything in the components dirs\n const shouldInclude =\n x.includes(options.dir) ||\n tamaguiOptions.components.some(\n (c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`)\n )\n if (!shouldInclude) {\n return true\n }\n return false\n }\n\n if (isNext12) {\n const oneOfJSRules = webpackConfig.module.rules[2].oneOf\n const swcLoaderIndex = 3\n const swcLoader = oneOfJSRules[swcLoaderIndex]\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(swcLoaderIndex, 0, {\n test: /\\.(jsx?|tsx?)$/,\n exclude: shouldExclude,\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n })\n } else {\n // next 11 modify loader\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|jsx)$/,\n exclude: shouldExclude,\n use: [\n 'thread-loader',\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n },\n ...rest,\n ]\n }\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n })\n }\n}\n\nfunction getSupportedBrowsers(dir, isDevelopment) {\n let browsers\n try {\n browsers = browserslist.loadConfig({\n path: dir,\n env: isDevelopment ? 'development' : 'production',\n })\n } catch {}\n\n return browsers\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
File without changes
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
import path from "path";
|
|
4
|
+
import browserslist from "browserslist";
|
|
4
5
|
import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
|
|
6
|
+
import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
|
|
7
|
+
import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
|
|
5
8
|
import webpack from "webpack";
|
|
6
9
|
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
7
10
|
return (nextConfig = {}) => {
|
|
8
11
|
return Object.assign({}, nextConfig, {
|
|
9
12
|
webpack: (webpackConfig, options) => {
|
|
10
|
-
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const { dir, config, dev, isServer } = options;
|
|
15
|
+
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
16
|
+
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
17
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
18
|
+
const rnw = require.resolve("react-native-web");
|
|
11
19
|
webpackConfig.resolve.alias = {
|
|
12
20
|
...webpackConfig.resolve.alias || {},
|
|
13
|
-
"react-
|
|
21
|
+
"react/jsx-runtime.js": jsxRuntime,
|
|
22
|
+
"react/jsx-runtime": jsxRuntime,
|
|
23
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
24
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
25
|
+
"react-native$": rnw,
|
|
14
26
|
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
15
|
-
"react/jsx-runtime": require.resolve("react/jsx-runtime"),
|
|
16
|
-
"react/jsx-dev-runtime": require.resolve("react/jsx-dev-runtime"),
|
|
17
27
|
react: require.resolve("react"),
|
|
18
28
|
"react-dom": require.resolve("react-dom")
|
|
19
29
|
};
|
|
@@ -34,7 +44,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
34
44
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
35
45
|
}
|
|
36
46
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
37
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
|
|
47
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
38
48
|
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
39
49
|
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
40
50
|
if (/^\@?react-native-/.test(request)) {
|
|
@@ -83,64 +93,79 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
83
93
|
if (oneOfRule) {
|
|
84
94
|
if (!dev) {
|
|
85
95
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
86
|
-
oneOfRule.oneOf
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
];
|
|
96
|
+
oneOfRule.oneOf.unshift({
|
|
97
|
+
test: /\.css$/i,
|
|
98
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
99
|
+
sideEffects: true
|
|
100
|
+
});
|
|
93
101
|
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
94
102
|
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
95
103
|
filename: "static/css/[name].[contenthash].css",
|
|
96
104
|
ignoreOrder: true
|
|
97
105
|
}));
|
|
98
106
|
} else {
|
|
99
|
-
const {
|
|
100
|
-
getGlobalCssLoader
|
|
101
|
-
} = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
102
107
|
oneOfRule.oneOf.unshift({
|
|
103
108
|
test: /\.css$/i,
|
|
104
109
|
sideEffects: true,
|
|
105
110
|
use: getGlobalCssLoader({
|
|
106
|
-
assetPrefix: options.config.assetPrefix,
|
|
107
|
-
future:
|
|
111
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
112
|
+
future: nextConfig.future,
|
|
113
|
+
experimental: nextConfig.experimental || {},
|
|
108
114
|
isClient: !isServer,
|
|
109
115
|
isServer,
|
|
110
116
|
isDevelopment: true
|
|
111
|
-
},
|
|
117
|
+
}, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
|
|
112
118
|
});
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
121
|
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
123
|
+
if (!shouldInclude) {
|
|
124
|
+
return true;
|
|
118
125
|
}
|
|
119
|
-
return
|
|
126
|
+
return false;
|
|
120
127
|
}, "shouldExclude");
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
test: /\.(tsx
|
|
128
|
+
if (isNext12) {
|
|
129
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
130
|
+
const swcLoaderIndex = 3;
|
|
131
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
132
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
133
|
+
test: /\.(jsx?|tsx?)$/,
|
|
127
134
|
exclude: shouldExclude,
|
|
128
135
|
use: [
|
|
129
|
-
|
|
130
|
-
loader: "esbuild-loader",
|
|
131
|
-
options: {
|
|
132
|
-
loader: "tsx",
|
|
133
|
-
minify: false
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
+
...[].concat(swcLoader.use),
|
|
136
137
|
{
|
|
137
138
|
loader: "tamagui-loader",
|
|
138
139
|
options: tamaguiOptions
|
|
139
140
|
}
|
|
140
141
|
]
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
145
|
+
webpackConfig.module.rules = [
|
|
146
|
+
first,
|
|
147
|
+
second,
|
|
148
|
+
{
|
|
149
|
+
test: /\.(tsx|jsx)$/,
|
|
150
|
+
exclude: shouldExclude,
|
|
151
|
+
use: [
|
|
152
|
+
"thread-loader",
|
|
153
|
+
{
|
|
154
|
+
loader: "esbuild-loader",
|
|
155
|
+
options: {
|
|
156
|
+
loader: "tsx",
|
|
157
|
+
minify: false
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
loader: "tamagui-loader",
|
|
162
|
+
options: tamaguiOptions
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
...rest
|
|
167
|
+
];
|
|
168
|
+
}
|
|
144
169
|
if (typeof nextConfig.webpack === "function") {
|
|
145
170
|
return nextConfig.webpack(webpackConfig, options);
|
|
146
171
|
}
|
|
@@ -149,6 +174,18 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
149
174
|
});
|
|
150
175
|
};
|
|
151
176
|
}, "withTamagui");
|
|
177
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
178
|
+
let browsers;
|
|
179
|
+
try {
|
|
180
|
+
browsers = browserslist.loadConfig({
|
|
181
|
+
path: dir,
|
|
182
|
+
env: isDevelopment ? "development" : "production"
|
|
183
|
+
});
|
|
184
|
+
} catch {
|
|
185
|
+
}
|
|
186
|
+
return browsers;
|
|
187
|
+
}
|
|
188
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
152
189
|
export {
|
|
153
190
|
withTamagui
|
|
154
191
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/withTamagui.ts"],
|
|
4
|
+
"sourcesContent": ["import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport { lazyPostCSS } from 'next/dist/build/webpack/config/blocks/css'\nimport { getGlobalCssLoader } from 'next/dist/build/webpack/config/blocks/css/loaders'\nimport webpack from 'webpack'\n\nexport const withTamagui = (tamaguiOptions: TamaguiOptions) => {\n return (nextConfig: any = {}) => {\n return Object.assign({}, nextConfig, {\n webpack: (webpackConfig: any, options) => {\n const { dir, config, dev, isServer } = options\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime.js')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime.js')\n const rnw = require.resolve('react-native-web')\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\n 'react/jsx-dev-runtime.js': jsxDevRuntime,\n 'react/jsx-dev-runtime': jsxDevRuntime,\n 'react-native$': rnw,\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n react: require.resolve('react'),\n 'react-dom': require.resolve('react-dom'),\n }\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n })\n )\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n console.log('ignoring tsconfig paths, they mess up transpile')\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n const isWebpack5 = !!config.future?.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n if (isWebpack5) {\n return (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n })\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n // @ts-ignore\n {\n assetPrefix: options.config.assetPrefix || config.assetPrefix,\n future: nextConfig.future,\n experimental: nextConfig.experimental || {},\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n ),\n })\n }\n }\n\n // add loader\n const shouldExclude = (x) => {\n // analyze everything in our jsx dir\n // analyze everything in the components dirs\n const shouldInclude =\n x.includes(options.dir) ||\n tamaguiOptions.components.some(\n (c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`)\n )\n if (!shouldInclude) {\n return true\n }\n return false\n }\n\n if (isNext12) {\n const oneOfJSRules = webpackConfig.module.rules[2].oneOf\n const swcLoaderIndex = 3\n const swcLoader = oneOfJSRules[swcLoaderIndex]\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(swcLoaderIndex, 0, {\n test: /\\.(jsx?|tsx?)$/,\n exclude: shouldExclude,\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n })\n } else {\n // next 11 modify loader\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|jsx)$/,\n exclude: shouldExclude,\n use: [\n 'thread-loader',\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n },\n ...rest,\n ]\n }\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n })\n }\n}\n\nfunction getSupportedBrowsers(dir, isDevelopment) {\n let browsers\n try {\n browsers = browserslist.loadConfig({\n path: dir,\n env: isDevelopment ? 'development' : 'production',\n })\n } catch {}\n\n return browsers\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./withTamagui";
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import path from "path";
|
|
4
|
+
import browserslist from "browserslist";
|
|
5
|
+
import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
|
|
6
|
+
import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
|
|
7
|
+
import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
|
|
8
|
+
import webpack from "webpack";
|
|
9
|
+
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
10
|
+
return (nextConfig = {}) => {
|
|
11
|
+
return Object.assign({}, nextConfig, {
|
|
12
|
+
webpack: (webpackConfig, options) => {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const { dir, config, dev, isServer } = options;
|
|
15
|
+
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
16
|
+
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
17
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
18
|
+
const rnw = require.resolve("react-native-web");
|
|
19
|
+
webpackConfig.resolve.alias = {
|
|
20
|
+
...webpackConfig.resolve.alias || {},
|
|
21
|
+
"react/jsx-runtime.js": jsxRuntime,
|
|
22
|
+
"react/jsx-runtime": jsxRuntime,
|
|
23
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
24
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
25
|
+
"react-native$": rnw,
|
|
26
|
+
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
27
|
+
react: require.resolve("react"),
|
|
28
|
+
"react-dom": require.resolve("react-dom")
|
|
29
|
+
};
|
|
30
|
+
webpackConfig.plugins.push(new webpack.DefinePlugin({
|
|
31
|
+
"process.env.TAMAGUI_TARGET": '"web"'
|
|
32
|
+
}));
|
|
33
|
+
if (process.env.IGNORE_TS_CONFIG_PATHS) {
|
|
34
|
+
console.log("ignoring tsconfig paths, they mess up transpile");
|
|
35
|
+
delete webpackConfig.resolve.plugins[0].paths["@tamagui/*"];
|
|
36
|
+
delete webpackConfig.resolve.plugins[0].paths["tamagui"];
|
|
37
|
+
}
|
|
38
|
+
const cssMin = webpackConfig.optimization.minimizer.find((x) => x.toString().includes("css-minimizer-plugin"));
|
|
39
|
+
if (cssMin) {
|
|
40
|
+
webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(cssMin.index, 1);
|
|
41
|
+
}
|
|
42
|
+
webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin());
|
|
43
|
+
if (!webpackConfig.resolve.extensions.includes(".web.js")) {
|
|
44
|
+
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
45
|
+
}
|
|
46
|
+
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
47
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
48
|
+
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
49
|
+
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
50
|
+
if (/^\@?react-native-/.test(request)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
|
|
54
|
+
return `commonjs ${fullPath}`;
|
|
55
|
+
}
|
|
56
|
+
if (/^(react-dom|react)$/.test(fullPath)) {
|
|
57
|
+
return `commonjs ${fullPath}`;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}, "includeModule");
|
|
61
|
+
if (isServer) {
|
|
62
|
+
webpackConfig.externals = [
|
|
63
|
+
...webpackConfig.externals.map((external) => {
|
|
64
|
+
if (typeof external !== "function") {
|
|
65
|
+
return external;
|
|
66
|
+
}
|
|
67
|
+
if (isWebpack5) {
|
|
68
|
+
return (ctx, cb) => {
|
|
69
|
+
const res = includeModule(ctx.context, ctx.request);
|
|
70
|
+
if (typeof res === "string") {
|
|
71
|
+
return cb(null, res);
|
|
72
|
+
}
|
|
73
|
+
if (res) {
|
|
74
|
+
return external(ctx, cb);
|
|
75
|
+
}
|
|
76
|
+
return cb();
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return (ctx, req, cb) => {
|
|
80
|
+
const res = includeModule(ctx, req);
|
|
81
|
+
if (typeof res === "string") {
|
|
82
|
+
return cb(null, res);
|
|
83
|
+
}
|
|
84
|
+
if (res) {
|
|
85
|
+
return external(ctx, cb);
|
|
86
|
+
}
|
|
87
|
+
return cb();
|
|
88
|
+
};
|
|
89
|
+
})
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
|
|
93
|
+
if (oneOfRule) {
|
|
94
|
+
if (!dev) {
|
|
95
|
+
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
96
|
+
oneOfRule.oneOf.unshift({
|
|
97
|
+
test: /\.css$/i,
|
|
98
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
99
|
+
sideEffects: true
|
|
100
|
+
});
|
|
101
|
+
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
102
|
+
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
103
|
+
filename: "static/css/[name].[contenthash].css",
|
|
104
|
+
ignoreOrder: true
|
|
105
|
+
}));
|
|
106
|
+
} else {
|
|
107
|
+
oneOfRule.oneOf.unshift({
|
|
108
|
+
test: /\.css$/i,
|
|
109
|
+
sideEffects: true,
|
|
110
|
+
use: getGlobalCssLoader({
|
|
111
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
112
|
+
future: nextConfig.future,
|
|
113
|
+
experimental: nextConfig.experimental || {},
|
|
114
|
+
isClient: !isServer,
|
|
115
|
+
isServer,
|
|
116
|
+
isDevelopment: true
|
|
117
|
+
}, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
122
|
+
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
123
|
+
if (!shouldInclude) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}, "shouldExclude");
|
|
128
|
+
if (isNext12) {
|
|
129
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
130
|
+
const swcLoaderIndex = 3;
|
|
131
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
132
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
133
|
+
test: /\.(jsx?|tsx?)$/,
|
|
134
|
+
exclude: shouldExclude,
|
|
135
|
+
use: [
|
|
136
|
+
...[].concat(swcLoader.use),
|
|
137
|
+
{
|
|
138
|
+
loader: "tamagui-loader",
|
|
139
|
+
options: tamaguiOptions
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
145
|
+
webpackConfig.module.rules = [
|
|
146
|
+
first,
|
|
147
|
+
second,
|
|
148
|
+
{
|
|
149
|
+
test: /\.(tsx|jsx)$/,
|
|
150
|
+
exclude: shouldExclude,
|
|
151
|
+
use: [
|
|
152
|
+
"thread-loader",
|
|
153
|
+
{
|
|
154
|
+
loader: "esbuild-loader",
|
|
155
|
+
options: {
|
|
156
|
+
loader: "tsx",
|
|
157
|
+
minify: false
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
loader: "tamagui-loader",
|
|
162
|
+
options: tamaguiOptions
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
...rest
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
if (typeof nextConfig.webpack === "function") {
|
|
170
|
+
return nextConfig.webpack(webpackConfig, options);
|
|
171
|
+
}
|
|
172
|
+
return webpackConfig;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
}, "withTamagui");
|
|
177
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
178
|
+
let browsers;
|
|
179
|
+
try {
|
|
180
|
+
browsers = browserslist.loadConfig({
|
|
181
|
+
path: dir,
|
|
182
|
+
env: isDevelopment ? "development" : "production"
|
|
183
|
+
});
|
|
184
|
+
} catch {
|
|
185
|
+
}
|
|
186
|
+
return browsers;
|
|
187
|
+
}
|
|
188
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
189
|
+
export {
|
|
190
|
+
withTamagui
|
|
191
|
+
};
|
package/package.json
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/next-plugin",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.50",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"typings": "types",
|
|
7
|
+
"main": "dist/cjs",
|
|
8
|
+
"module": "dist/esm",
|
|
9
|
+
"module:jsx": "dist/jsx",
|
|
8
10
|
"files": [
|
|
9
|
-
"types
|
|
10
|
-
"dist"
|
|
11
|
-
"src"
|
|
11
|
+
"types",
|
|
12
|
+
"dist"
|
|
12
13
|
],
|
|
13
14
|
"scripts": {
|
|
14
15
|
"build": "tamagui-build",
|
|
15
16
|
"watch": "tamagui-build --watch"
|
|
16
17
|
},
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"@tamagui/static": "^1.0.0-alpha.5",
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@tamagui/static": "^1.0.0-alpha.50",
|
|
20
|
+
"browserslist": "^4.19.1",
|
|
21
21
|
"css-minimizer-webpack-plugin": "^3.1.3",
|
|
22
|
-
"esbuild-loader": "^2.
|
|
22
|
+
"esbuild-loader": "^2.18.0",
|
|
23
23
|
"next-compose-plugins": "^2.2.1",
|
|
24
|
-
"tamagui-loader": "^1.0.0-alpha.
|
|
24
|
+
"tamagui-loader": "^1.0.0-alpha.50",
|
|
25
|
+
"thread-loader": "^3.0.4"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@tamagui/build": "^1.0.0-alpha.44",
|
|
29
|
+
"next": "^12.0.8"
|
|
25
30
|
},
|
|
26
31
|
"peerDependencies": {
|
|
27
32
|
"next": ">=11.0.0"
|
|
@@ -29,5 +34,5 @@
|
|
|
29
34
|
"publishConfig": {
|
|
30
35
|
"access": "public"
|
|
31
36
|
},
|
|
32
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "f5d9523e8b04dda202337e7b8181345124e95cbd"
|
|
33
38
|
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAOhD,eAAO,MAAM,WAAW,mBAAoB,cAAc,mBACpC,GAAG,QA8NxB,CAAA"}
|
package/dist/index.cjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/withTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './withTamagui'\n", "import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport webpack from 'webpack'\n\nexport const withTamagui = (tamaguiOptions: TamaguiOptions) => {\n return (nextConfig: any = {}) => {\n return Object.assign({}, nextConfig, {\n webpack: (webpackConfig, options) => {\n const { config, dev, isServer } = options\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react-native$': 'react-native-web',\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n // fix mdx-bundler issue importing .js specifically\n // 'react/jsx-runtime.js': require.resolve('react/jsx-runtime'),\n 'react/jsx-runtime': require.resolve('react/jsx-runtime'),\n 'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),\n react: require.resolve('react'),\n 'react-dom': require.resolve('react-dom'),\n }\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n })\n )\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n console.log('ignoring tsconfig paths, they mess up transpile')\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n // why is it undefined on next11??? but it says using webpack5\n const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n if (isWebpack5) {\n return (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf = [\n {\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n },\n ]\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n const {\n getGlobalCssLoader,\n } = require('next/dist/build/webpack/config/blocks/css/loaders')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n {\n assetPrefix: options.config.assetPrefix,\n future: { webpack5: true },\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n [],\n []\n ),\n })\n }\n }\n\n // add loader\n const shouldExclude = (x) => {\n // analyze everything in our src dir\n // analyze everything in the components dirs\n if (\n x.includes(options.dir) ||\n tamaguiOptions.components.some(\n (c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/_jsx/`)\n )\n ) {\n return false\n }\n // exclude everything else\n return true\n }\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|js|mjs|jsx)$/,\n exclude: shouldExclude,\n use: [\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n },\n ...rest,\n ]\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n })\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/withTamagui.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/withTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport webpack from 'webpack'\n\nexport const withTamagui = (tamaguiOptions: TamaguiOptions) => {\n return (nextConfig: any = {}) => {\n return Object.assign({}, nextConfig, {\n webpack: (webpackConfig, options) => {\n const { config, dev, isServer } = options\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react-native$': 'react-native-web',\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n // fix mdx-bundler issue importing .js specifically\n // 'react/jsx-runtime.js': require.resolve('react/jsx-runtime'),\n 'react/jsx-runtime': require.resolve('react/jsx-runtime'),\n 'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),\n react: require.resolve('react'),\n 'react-dom': require.resolve('react-dom'),\n }\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n })\n )\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n console.log('ignoring tsconfig paths, they mess up transpile')\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n // why is it undefined on next11??? but it says using webpack5\n const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n if (isWebpack5) {\n return (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf = [\n {\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n },\n ]\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n const {\n getGlobalCssLoader,\n } = require('next/dist/build/webpack/config/blocks/css/loaders')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n {\n assetPrefix: options.config.assetPrefix,\n future: { webpack5: true },\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n [],\n []\n ),\n })\n }\n }\n\n // add loader\n const shouldExclude = (x) => {\n // analyze everything in our src dir\n // analyze everything in the components dirs\n if (\n x.includes(options.dir) ||\n tamaguiOptions.components.some(\n (c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/_jsx/`)\n )\n ) {\n return false\n }\n // exclude everything else\n return true\n }\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|js|mjs|jsx)$/,\n exclude: shouldExclude,\n use: [\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n },\n ...rest,\n ]\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n })\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './withTamagui'
|
package/src/withTamagui.ts
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
|
|
3
|
-
import { TamaguiOptions } from '@tamagui/static'
|
|
4
|
-
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'
|
|
5
|
-
import webpack from 'webpack'
|
|
6
|
-
|
|
7
|
-
export const withTamagui = (tamaguiOptions: TamaguiOptions) => {
|
|
8
|
-
return (nextConfig: any = {}) => {
|
|
9
|
-
return Object.assign({}, nextConfig, {
|
|
10
|
-
webpack: (webpackConfig, options) => {
|
|
11
|
-
const { config, dev, isServer } = options
|
|
12
|
-
|
|
13
|
-
webpackConfig.resolve.alias = {
|
|
14
|
-
...(webpackConfig.resolve.alias || {}),
|
|
15
|
-
'react-native$': 'react-native-web',
|
|
16
|
-
'react-native-web/src/modules/normalizeColor': require.resolve(
|
|
17
|
-
'react-native-web/dist/cjs/modules/normalizeColor'
|
|
18
|
-
),
|
|
19
|
-
// fix mdx-bundler issue importing .js specifically
|
|
20
|
-
// 'react/jsx-runtime.js': require.resolve('react/jsx-runtime'),
|
|
21
|
-
'react/jsx-runtime': require.resolve('react/jsx-runtime'),
|
|
22
|
-
'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),
|
|
23
|
-
react: require.resolve('react'),
|
|
24
|
-
'react-dom': require.resolve('react-dom'),
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
webpackConfig.plugins.push(
|
|
28
|
-
new webpack.DefinePlugin({
|
|
29
|
-
'process.env.TAMAGUI_TARGET': '"web"',
|
|
30
|
-
})
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
if (process.env.IGNORE_TS_CONFIG_PATHS) {
|
|
34
|
-
console.log('ignoring tsconfig paths, they mess up transpile')
|
|
35
|
-
delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']
|
|
36
|
-
delete webpackConfig.resolve.plugins[0].paths['tamagui']
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// TODO document and make configurable
|
|
40
|
-
// replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles
|
|
41
|
-
const cssMin = webpackConfig.optimization.minimizer.find((x) =>
|
|
42
|
-
x.toString().includes('css-minimizer-plugin')
|
|
43
|
-
)
|
|
44
|
-
if (cssMin) {
|
|
45
|
-
webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(
|
|
46
|
-
cssMin.index,
|
|
47
|
-
1
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())
|
|
51
|
-
|
|
52
|
-
if (!webpackConfig.resolve.extensions.includes('.web.js')) {
|
|
53
|
-
webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// look for compiled js with jsx intact as specified by module:jsx
|
|
57
|
-
webpackConfig.resolve.mainFields.unshift('module:jsx')
|
|
58
|
-
|
|
59
|
-
// why is it undefined on next11??? but it says using webpack5
|
|
60
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === 'undefined'
|
|
61
|
-
|
|
62
|
-
const includeModule = (context: string, request: string) => {
|
|
63
|
-
const fullPath = request[0] === '.' ? path.join(context, request) : request
|
|
64
|
-
if (/^\@?react-native-/.test(request)) {
|
|
65
|
-
return false
|
|
66
|
-
}
|
|
67
|
-
if (
|
|
68
|
-
fullPath.startsWith('react-native-web') ||
|
|
69
|
-
fullPath.includes('node_modules/react-native-web')
|
|
70
|
-
) {
|
|
71
|
-
return `commonjs ${fullPath}`
|
|
72
|
-
}
|
|
73
|
-
if (/^(react-dom|react)$/.test(fullPath)) {
|
|
74
|
-
return `commonjs ${fullPath}`
|
|
75
|
-
}
|
|
76
|
-
return true
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (isServer) {
|
|
80
|
-
// externalize react native things from bundle
|
|
81
|
-
webpackConfig.externals = [
|
|
82
|
-
...webpackConfig.externals.map((external) => {
|
|
83
|
-
if (typeof external !== 'function') {
|
|
84
|
-
return external
|
|
85
|
-
}
|
|
86
|
-
// only runs on server
|
|
87
|
-
if (isWebpack5) {
|
|
88
|
-
return (ctx, cb) => {
|
|
89
|
-
const res = includeModule(ctx.context, ctx.request)
|
|
90
|
-
if (typeof res === 'string') {
|
|
91
|
-
return cb(null, res)
|
|
92
|
-
}
|
|
93
|
-
if (res) {
|
|
94
|
-
return external(ctx, cb)
|
|
95
|
-
}
|
|
96
|
-
return cb()
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return (ctx, req, cb) => {
|
|
100
|
-
const res = includeModule(ctx, req)
|
|
101
|
-
if (typeof res === 'string') {
|
|
102
|
-
return cb(null, res)
|
|
103
|
-
}
|
|
104
|
-
if (res) {
|
|
105
|
-
return external(ctx, cb)
|
|
106
|
-
}
|
|
107
|
-
return cb()
|
|
108
|
-
}
|
|
109
|
-
}),
|
|
110
|
-
]
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)
|
|
114
|
-
|
|
115
|
-
if (oneOfRule) {
|
|
116
|
-
if (!dev) {
|
|
117
|
-
// replace nextjs picky style rules with simple minicssextract
|
|
118
|
-
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
119
|
-
oneOfRule.oneOf = [
|
|
120
|
-
{
|
|
121
|
-
test: /\.css$/i,
|
|
122
|
-
use: [MiniCssExtractPlugin.loader, 'css-loader'],
|
|
123
|
-
sideEffects: true,
|
|
124
|
-
},
|
|
125
|
-
]
|
|
126
|
-
const idx = webpackConfig.plugins.findIndex(
|
|
127
|
-
(x) => x.constructor.name === 'NextMiniCssExtractPlugin'
|
|
128
|
-
)
|
|
129
|
-
webpackConfig.plugins.splice(
|
|
130
|
-
idx,
|
|
131
|
-
1,
|
|
132
|
-
new MiniCssExtractPlugin({
|
|
133
|
-
filename: 'static/css/[name].[contenthash].css',
|
|
134
|
-
ignoreOrder: true,
|
|
135
|
-
})
|
|
136
|
-
)
|
|
137
|
-
} else {
|
|
138
|
-
const {
|
|
139
|
-
getGlobalCssLoader,
|
|
140
|
-
} = require('next/dist/build/webpack/config/blocks/css/loaders')
|
|
141
|
-
oneOfRule.oneOf.unshift({
|
|
142
|
-
test: /\.css$/i,
|
|
143
|
-
sideEffects: true,
|
|
144
|
-
use: getGlobalCssLoader(
|
|
145
|
-
{
|
|
146
|
-
assetPrefix: options.config.assetPrefix,
|
|
147
|
-
future: { webpack5: true },
|
|
148
|
-
isClient: !isServer,
|
|
149
|
-
isServer,
|
|
150
|
-
isDevelopment: true,
|
|
151
|
-
},
|
|
152
|
-
[],
|
|
153
|
-
[]
|
|
154
|
-
),
|
|
155
|
-
})
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// add loader
|
|
160
|
-
const shouldExclude = (x) => {
|
|
161
|
-
// analyze everything in our src dir
|
|
162
|
-
// analyze everything in the components dirs
|
|
163
|
-
if (
|
|
164
|
-
x.includes(options.dir) ||
|
|
165
|
-
tamaguiOptions.components.some(
|
|
166
|
-
(c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/_jsx/`)
|
|
167
|
-
)
|
|
168
|
-
) {
|
|
169
|
-
return false
|
|
170
|
-
}
|
|
171
|
-
// exclude everything else
|
|
172
|
-
return true
|
|
173
|
-
}
|
|
174
|
-
const [first, second, ...rest] = webpackConfig.module.rules
|
|
175
|
-
webpackConfig.module.rules = [
|
|
176
|
-
first,
|
|
177
|
-
second,
|
|
178
|
-
{
|
|
179
|
-
test: /\.(tsx|js|mjs|jsx)$/,
|
|
180
|
-
exclude: shouldExclude,
|
|
181
|
-
use: [
|
|
182
|
-
{
|
|
183
|
-
loader: 'esbuild-loader',
|
|
184
|
-
options: {
|
|
185
|
-
loader: 'tsx',
|
|
186
|
-
minify: false,
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
loader: 'tamagui-loader',
|
|
191
|
-
options: tamaguiOptions,
|
|
192
|
-
},
|
|
193
|
-
],
|
|
194
|
-
},
|
|
195
|
-
...rest,
|
|
196
|
-
]
|
|
197
|
-
|
|
198
|
-
if (typeof nextConfig.webpack === 'function') {
|
|
199
|
-
return nextConfig.webpack(webpackConfig, options)
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return webpackConfig
|
|
203
|
-
},
|
|
204
|
-
})
|
|
205
|
-
}
|
|
206
|
-
}
|
package/types.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// Generated by dts-bundle-generator v5.9.0
|
|
2
|
-
|
|
3
|
-
export interface TamaguiOptions {
|
|
4
|
-
components: string[];
|
|
5
|
-
config?: string;
|
|
6
|
-
evaluateVars?: boolean;
|
|
7
|
-
importsWhitelist?: string[];
|
|
8
|
-
disableExtraction?: boolean;
|
|
9
|
-
exclude?: RegExp;
|
|
10
|
-
logTimings?: boolean;
|
|
11
|
-
cssPath?: string;
|
|
12
|
-
cssData?: any;
|
|
13
|
-
deoptProps?: Set<string>;
|
|
14
|
-
excludeProps?: string[];
|
|
15
|
-
}
|
|
16
|
-
export declare const withTamagui: (tamaguiOptions: TamaguiOptions) => (nextConfig?: any) => any;
|
|
17
|
-
|
|
18
|
-
export {};
|