@tamagui/next-plugin 1.0.0-alpha.41 → 1.0.0-alpha.45
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/withTamagui.js
CHANGED
|
@@ -48,17 +48,25 @@ __export(withTamagui_exports, {
|
|
|
48
48
|
withTamagui: () => withTamagui
|
|
49
49
|
});
|
|
50
50
|
var import_path = __toESM(require("path"));
|
|
51
|
+
var import_browserslist = __toESM(require("browserslist"));
|
|
51
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");
|
|
52
55
|
var import_webpack = __toESM(require("webpack"));
|
|
53
56
|
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
54
57
|
return (nextConfig = {}) => {
|
|
55
58
|
return Object.assign({}, nextConfig, {
|
|
56
59
|
webpack: (webpackConfig, options) => {
|
|
57
|
-
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const { dir, config, dev, isServer } = options;
|
|
62
|
+
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
58
63
|
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
64
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
59
65
|
webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, webpackConfig.resolve.alias || {}), {
|
|
60
66
|
"react/jsx-runtime.js": jsxRuntime,
|
|
61
67
|
"react/jsx-runtime": jsxRuntime,
|
|
68
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
69
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
62
70
|
"react-native$": "react-native-web",
|
|
63
71
|
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
64
72
|
react: require.resolve("react"),
|
|
@@ -81,7 +89,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
81
89
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
82
90
|
}
|
|
83
91
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
84
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
|
|
92
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
85
93
|
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
86
94
|
const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
|
|
87
95
|
if (/^\@?react-native-/.test(request)) {
|
|
@@ -130,62 +138,82 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
130
138
|
if (oneOfRule) {
|
|
131
139
|
if (!dev) {
|
|
132
140
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
133
|
-
oneOfRule.oneOf
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
];
|
|
141
|
+
oneOfRule.oneOf.unshift({
|
|
142
|
+
test: /\.css$/i,
|
|
143
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
144
|
+
sideEffects: true
|
|
145
|
+
});
|
|
140
146
|
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
141
147
|
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
142
148
|
filename: "static/css/[name].[contenthash].css",
|
|
143
149
|
ignoreOrder: true
|
|
144
150
|
}));
|
|
145
151
|
} else {
|
|
146
|
-
const {
|
|
147
|
-
getGlobalCssLoader
|
|
148
|
-
} = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
149
152
|
oneOfRule.oneOf.unshift({
|
|
150
153
|
test: /\.css$/i,
|
|
151
154
|
sideEffects: true,
|
|
152
|
-
use: getGlobalCssLoader({
|
|
153
|
-
assetPrefix: options.config.assetPrefix,
|
|
154
|
-
future:
|
|
155
|
+
use: (0, import_loaders.getGlobalCssLoader)({
|
|
156
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
157
|
+
future: nextConfig.future,
|
|
158
|
+
experimental: nextConfig.experimental || {},
|
|
155
159
|
isClient: !isServer,
|
|
156
160
|
isServer,
|
|
157
161
|
isDevelopment: true
|
|
158
|
-
},
|
|
162
|
+
}, () => (0, import_css.lazyPostCSS)(dir, getSupportedBrowsers(dir, dev)), [])
|
|
159
163
|
});
|
|
160
164
|
}
|
|
161
165
|
}
|
|
162
166
|
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
163
167
|
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
164
|
-
|
|
168
|
+
if (!shouldInclude) {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
return false;
|
|
165
172
|
}, "shouldExclude");
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
173
|
+
if (isNext12) {
|
|
174
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
175
|
+
const swcLoaderIndex = oneOfJSRules.findIndex((x) => {
|
|
176
|
+
var _a2;
|
|
177
|
+
return !x.issuerLayer && ((_a2 = x.use) == null ? void 0 : _a2.loader) === "next-swc-loader";
|
|
178
|
+
});
|
|
179
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
180
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
181
|
+
test: /\.(jsx?|tsx?)$/,
|
|
172
182
|
exclude: shouldExclude,
|
|
173
183
|
use: [
|
|
174
|
-
|
|
175
|
-
loader: "esbuild-loader",
|
|
176
|
-
options: {
|
|
177
|
-
loader: "tsx",
|
|
178
|
-
minify: false
|
|
179
|
-
}
|
|
180
|
-
},
|
|
184
|
+
swcLoader.use,
|
|
181
185
|
{
|
|
182
186
|
loader: "tamagui-loader",
|
|
183
187
|
options: tamaguiOptions
|
|
184
188
|
}
|
|
185
189
|
]
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
});
|
|
191
|
+
} else {
|
|
192
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
193
|
+
webpackConfig.module.rules = [
|
|
194
|
+
first,
|
|
195
|
+
second,
|
|
196
|
+
{
|
|
197
|
+
test: /\.(tsx|jsx)$/,
|
|
198
|
+
exclude: shouldExclude,
|
|
199
|
+
use: [
|
|
200
|
+
"thread-loader",
|
|
201
|
+
{
|
|
202
|
+
loader: "esbuild-loader",
|
|
203
|
+
options: {
|
|
204
|
+
loader: "tsx",
|
|
205
|
+
minify: false
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
loader: "tamagui-loader",
|
|
210
|
+
options: tamaguiOptions
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
...rest
|
|
215
|
+
];
|
|
216
|
+
}
|
|
189
217
|
if (typeof nextConfig.webpack === "function") {
|
|
190
218
|
return nextConfig.webpack(webpackConfig, options);
|
|
191
219
|
}
|
|
@@ -194,5 +222,17 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
194
222
|
});
|
|
195
223
|
};
|
|
196
224
|
}, "withTamagui");
|
|
225
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
226
|
+
let browsers;
|
|
227
|
+
try {
|
|
228
|
+
browsers = import_browserslist.default.loadConfig({
|
|
229
|
+
path: dir,
|
|
230
|
+
env: isDevelopment ? "development" : "production"
|
|
231
|
+
});
|
|
232
|
+
} catch {
|
|
233
|
+
}
|
|
234
|
+
return browsers;
|
|
235
|
+
}
|
|
236
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
197
237
|
module.exports = __toCommonJS(withTamagui_exports);
|
|
198
238
|
//# sourceMappingURL=withTamagui.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime.js')\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\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 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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAGjB,0CAA+B;AAC/B,qBAAoB;AAEb,MAAM,cAAc,wBAAC,mBAAmC;AAC7D,SAAO,CAAC,aAAkB,OAAO;AAC/B,WAAO,OAAO,OAAO,IAAI,YAAY;AAAA,MACnC,SAAS,CAAC,
|
|
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\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$': 'react-native-web',\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 = oneOfJSRules.findIndex(\n (x) => !x.issuerLayer && x.use?.loader === 'next-swc-loader'\n )\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 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
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/withTamagui.js
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
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";
|
|
11
16
|
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
17
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
12
18
|
webpackConfig.resolve.alias = {
|
|
13
19
|
...webpackConfig.resolve.alias || {},
|
|
14
20
|
"react/jsx-runtime.js": jsxRuntime,
|
|
15
21
|
"react/jsx-runtime": jsxRuntime,
|
|
22
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
23
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
16
24
|
"react-native$": "react-native-web",
|
|
17
25
|
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
18
26
|
react: require.resolve("react"),
|
|
@@ -35,7 +43,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
35
43
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
36
44
|
}
|
|
37
45
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
38
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
|
|
46
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
39
47
|
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
40
48
|
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
41
49
|
if (/^\@?react-native-/.test(request)) {
|
|
@@ -84,62 +92,82 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
84
92
|
if (oneOfRule) {
|
|
85
93
|
if (!dev) {
|
|
86
94
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
87
|
-
oneOfRule.oneOf
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
];
|
|
95
|
+
oneOfRule.oneOf.unshift({
|
|
96
|
+
test: /\.css$/i,
|
|
97
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
98
|
+
sideEffects: true
|
|
99
|
+
});
|
|
94
100
|
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
95
101
|
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
96
102
|
filename: "static/css/[name].[contenthash].css",
|
|
97
103
|
ignoreOrder: true
|
|
98
104
|
}));
|
|
99
105
|
} else {
|
|
100
|
-
const {
|
|
101
|
-
getGlobalCssLoader
|
|
102
|
-
} = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
103
106
|
oneOfRule.oneOf.unshift({
|
|
104
107
|
test: /\.css$/i,
|
|
105
108
|
sideEffects: true,
|
|
106
109
|
use: getGlobalCssLoader({
|
|
107
|
-
assetPrefix: options.config.assetPrefix,
|
|
108
|
-
future:
|
|
110
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
111
|
+
future: nextConfig.future,
|
|
112
|
+
experimental: nextConfig.experimental || {},
|
|
109
113
|
isClient: !isServer,
|
|
110
114
|
isServer,
|
|
111
115
|
isDevelopment: true
|
|
112
|
-
},
|
|
116
|
+
}, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
120
|
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
117
121
|
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
118
|
-
|
|
122
|
+
if (!shouldInclude) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
119
126
|
}, "shouldExclude");
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
if (isNext12) {
|
|
128
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
129
|
+
const swcLoaderIndex = oneOfJSRules.findIndex((x) => {
|
|
130
|
+
var _a2;
|
|
131
|
+
return !x.issuerLayer && ((_a2 = x.use) == null ? void 0 : _a2.loader) === "next-swc-loader";
|
|
132
|
+
});
|
|
133
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
134
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
135
|
+
test: /\.(jsx?|tsx?)$/,
|
|
126
136
|
exclude: shouldExclude,
|
|
127
137
|
use: [
|
|
128
|
-
|
|
129
|
-
loader: "esbuild-loader",
|
|
130
|
-
options: {
|
|
131
|
-
loader: "tsx",
|
|
132
|
-
minify: false
|
|
133
|
-
}
|
|
134
|
-
},
|
|
138
|
+
swcLoader.use,
|
|
135
139
|
{
|
|
136
140
|
loader: "tamagui-loader",
|
|
137
141
|
options: tamaguiOptions
|
|
138
142
|
}
|
|
139
143
|
]
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
147
|
+
webpackConfig.module.rules = [
|
|
148
|
+
first,
|
|
149
|
+
second,
|
|
150
|
+
{
|
|
151
|
+
test: /\.(tsx|jsx)$/,
|
|
152
|
+
exclude: shouldExclude,
|
|
153
|
+
use: [
|
|
154
|
+
"thread-loader",
|
|
155
|
+
{
|
|
156
|
+
loader: "esbuild-loader",
|
|
157
|
+
options: {
|
|
158
|
+
loader: "tsx",
|
|
159
|
+
minify: false
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
loader: "tamagui-loader",
|
|
164
|
+
options: tamaguiOptions
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
...rest
|
|
169
|
+
];
|
|
170
|
+
}
|
|
143
171
|
if (typeof nextConfig.webpack === "function") {
|
|
144
172
|
return nextConfig.webpack(webpackConfig, options);
|
|
145
173
|
}
|
|
@@ -148,6 +176,18 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
148
176
|
});
|
|
149
177
|
};
|
|
150
178
|
}, "withTamagui");
|
|
179
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
180
|
+
let browsers;
|
|
181
|
+
try {
|
|
182
|
+
browsers = browserslist.loadConfig({
|
|
183
|
+
path: dir,
|
|
184
|
+
env: isDevelopment ? "development" : "production"
|
|
185
|
+
});
|
|
186
|
+
} catch {
|
|
187
|
+
}
|
|
188
|
+
return browsers;
|
|
189
|
+
}
|
|
190
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
151
191
|
export {
|
|
152
192
|
withTamagui
|
|
153
193
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime.js')\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\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 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
|
|
5
|
-
"mappings": ";;AAAA;AAGA;AACA;AAEO,MAAM,cAAc,wBAAC,mBAAmC;AAC7D,SAAO,CAAC,aAAkB,OAAO;AAC/B,WAAO,OAAO,OAAO,IAAI,YAAY;AAAA,MACnC,SAAS,CAAC,
|
|
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\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$': 'react-native-web',\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 = oneOfJSRules.findIndex(\n (x) => !x.issuerLayer && x.use?.loader === 'next-swc-loader'\n )\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 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
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/withTamagui.js
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
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";
|
|
11
16
|
const jsxRuntime = require.resolve("react/jsx-runtime.js");
|
|
17
|
+
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime.js");
|
|
12
18
|
webpackConfig.resolve.alias = {
|
|
13
19
|
...webpackConfig.resolve.alias || {},
|
|
14
20
|
"react/jsx-runtime.js": jsxRuntime,
|
|
15
21
|
"react/jsx-runtime": jsxRuntime,
|
|
22
|
+
"react/jsx-dev-runtime.js": jsxDevRuntime,
|
|
23
|
+
"react/jsx-dev-runtime": jsxDevRuntime,
|
|
16
24
|
"react-native$": "react-native-web",
|
|
17
25
|
"react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
|
|
18
26
|
react: require.resolve("react"),
|
|
@@ -35,7 +43,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
35
43
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
36
44
|
}
|
|
37
45
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
38
|
-
const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
|
|
46
|
+
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
39
47
|
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
40
48
|
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
41
49
|
if (/^\@?react-native-/.test(request)) {
|
|
@@ -84,62 +92,82 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
84
92
|
if (oneOfRule) {
|
|
85
93
|
if (!dev) {
|
|
86
94
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
87
|
-
oneOfRule.oneOf
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
];
|
|
95
|
+
oneOfRule.oneOf.unshift({
|
|
96
|
+
test: /\.css$/i,
|
|
97
|
+
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
|
98
|
+
sideEffects: true
|
|
99
|
+
});
|
|
94
100
|
const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
|
|
95
101
|
webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
|
|
96
102
|
filename: "static/css/[name].[contenthash].css",
|
|
97
103
|
ignoreOrder: true
|
|
98
104
|
}));
|
|
99
105
|
} else {
|
|
100
|
-
const {
|
|
101
|
-
getGlobalCssLoader
|
|
102
|
-
} = require("next/dist/build/webpack/config/blocks/css/loaders");
|
|
103
106
|
oneOfRule.oneOf.unshift({
|
|
104
107
|
test: /\.css$/i,
|
|
105
108
|
sideEffects: true,
|
|
106
109
|
use: getGlobalCssLoader({
|
|
107
|
-
assetPrefix: options.config.assetPrefix,
|
|
108
|
-
future:
|
|
110
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
111
|
+
future: nextConfig.future,
|
|
112
|
+
experimental: nextConfig.experimental || {},
|
|
109
113
|
isClient: !isServer,
|
|
110
114
|
isServer,
|
|
111
115
|
isDevelopment: true
|
|
112
|
-
},
|
|
116
|
+
}, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
120
|
const shouldExclude = /* @__PURE__ */ __name((x) => {
|
|
117
121
|
const shouldInclude = x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/dist/jsx/`));
|
|
118
|
-
|
|
122
|
+
if (!shouldInclude) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
119
126
|
}, "shouldExclude");
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
if (isNext12) {
|
|
128
|
+
const oneOfJSRules = webpackConfig.module.rules[2].oneOf;
|
|
129
|
+
const swcLoaderIndex = oneOfJSRules.findIndex((x) => {
|
|
130
|
+
var _a2;
|
|
131
|
+
return !x.issuerLayer && ((_a2 = x.use) == null ? void 0 : _a2.loader) === "next-swc-loader";
|
|
132
|
+
});
|
|
133
|
+
const swcLoader = oneOfJSRules[swcLoaderIndex];
|
|
134
|
+
oneOfJSRules.splice(swcLoaderIndex, 0, {
|
|
135
|
+
test: /\.(jsx?|tsx?)$/,
|
|
126
136
|
exclude: shouldExclude,
|
|
127
137
|
use: [
|
|
128
|
-
|
|
129
|
-
loader: "esbuild-loader",
|
|
130
|
-
options: {
|
|
131
|
-
loader: "tsx",
|
|
132
|
-
minify: false
|
|
133
|
-
}
|
|
134
|
-
},
|
|
138
|
+
swcLoader.use,
|
|
135
139
|
{
|
|
136
140
|
loader: "tamagui-loader",
|
|
137
141
|
options: tamaguiOptions
|
|
138
142
|
}
|
|
139
143
|
]
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
const [first, second, ...rest] = webpackConfig.module.rules;
|
|
147
|
+
webpackConfig.module.rules = [
|
|
148
|
+
first,
|
|
149
|
+
second,
|
|
150
|
+
{
|
|
151
|
+
test: /\.(tsx|jsx)$/,
|
|
152
|
+
exclude: shouldExclude,
|
|
153
|
+
use: [
|
|
154
|
+
"thread-loader",
|
|
155
|
+
{
|
|
156
|
+
loader: "esbuild-loader",
|
|
157
|
+
options: {
|
|
158
|
+
loader: "tsx",
|
|
159
|
+
minify: false
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
loader: "tamagui-loader",
|
|
164
|
+
options: tamaguiOptions
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
...rest
|
|
169
|
+
];
|
|
170
|
+
}
|
|
143
171
|
if (typeof nextConfig.webpack === "function") {
|
|
144
172
|
return nextConfig.webpack(webpackConfig, options);
|
|
145
173
|
}
|
|
@@ -148,6 +176,18 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
148
176
|
});
|
|
149
177
|
};
|
|
150
178
|
}, "withTamagui");
|
|
179
|
+
function getSupportedBrowsers(dir, isDevelopment) {
|
|
180
|
+
let browsers;
|
|
181
|
+
try {
|
|
182
|
+
browsers = browserslist.loadConfig({
|
|
183
|
+
path: dir,
|
|
184
|
+
env: isDevelopment ? "development" : "production"
|
|
185
|
+
});
|
|
186
|
+
} catch {
|
|
187
|
+
}
|
|
188
|
+
return browsers;
|
|
189
|
+
}
|
|
190
|
+
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
151
191
|
export {
|
|
152
192
|
withTamagui
|
|
153
193
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/next-plugin",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.45",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"typings": "types",
|
|
@@ -16,15 +16,17 @@
|
|
|
16
16
|
"watch": "tamagui-build --watch"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@tamagui/static": "^1.0.0-alpha.
|
|
19
|
+
"@tamagui/static": "^1.0.0-alpha.45",
|
|
20
|
+
"browserslist": "^4.19.1",
|
|
20
21
|
"css-minimizer-webpack-plugin": "^3.1.3",
|
|
21
|
-
"esbuild-loader": "^2.
|
|
22
|
+
"esbuild-loader": "^2.18.0",
|
|
22
23
|
"next-compose-plugins": "^2.2.1",
|
|
23
|
-
"tamagui-loader": "^1.0.0-alpha.
|
|
24
|
+
"tamagui-loader": "^1.0.0-alpha.45",
|
|
25
|
+
"thread-loader": "^3.0.4"
|
|
24
26
|
},
|
|
25
27
|
"devDependencies": {
|
|
26
|
-
"@tamagui/build": "^1.0.0-alpha.
|
|
27
|
-
"next": "^
|
|
28
|
+
"@tamagui/build": "^1.0.0-alpha.44",
|
|
29
|
+
"next": "^12.0.8"
|
|
28
30
|
},
|
|
29
31
|
"peerDependencies": {
|
|
30
32
|
"next": ">=11.0.0"
|
|
@@ -32,5 +34,5 @@
|
|
|
32
34
|
"publishConfig": {
|
|
33
35
|
"access": "public"
|
|
34
36
|
},
|
|
35
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "b04707063cb83e42e438c0a528b830fac5292f3b"
|
|
36
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;
|
|
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,QA+NxB,CAAA"}
|