@tamagui/next-plugin 1.0.0-beta.172 → 1.0.0-beta.179
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 +30 -27
- package/dist/cjs/withTamagui.js.map +2 -2
- package/dist/esm/withTamagui.js +32 -28
- package/dist/esm/withTamagui.js.map +2 -2
- package/dist/jsx/withTamagui.js +32 -28
- package/package.json +6 -6
- package/types/withTamagui.d.ts +8 -1
- package/types/withTamagui.d.ts.map +1 -1
package/dist/cjs/withTamagui.js
CHANGED
|
@@ -50,7 +50,7 @@ var import_tamagui_loader = require("tamagui-loader");
|
|
|
50
50
|
var import_webpack = __toESM(require("webpack"));
|
|
51
51
|
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
52
52
|
return (nextConfig = {}) => {
|
|
53
|
-
return
|
|
53
|
+
return __spreadProps(__spreadValues({}, nextConfig), {
|
|
54
54
|
webpack: (webpackConfig, options) => {
|
|
55
55
|
var _a, _b;
|
|
56
56
|
const { dir, config, dev, isServer } = options;
|
|
@@ -58,6 +58,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
58
58
|
globalThis["__DEV__"] = dev;
|
|
59
59
|
}
|
|
60
60
|
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
61
|
+
const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
|
|
61
62
|
const jsxRuntime = require.resolve("react/jsx-runtime");
|
|
62
63
|
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
|
|
63
64
|
const rnw = require.resolve("react-native-web");
|
|
@@ -114,45 +115,47 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
114
115
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
115
116
|
}
|
|
116
117
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
117
|
-
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
118
|
-
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
119
|
-
const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
|
|
120
|
-
if (fullPath === "@tamagui/expo-linear-gradient") {
|
|
121
|
-
return "inline";
|
|
122
|
-
}
|
|
123
|
-
if (/^\@?react-native-/.test(request)) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
if (fullPath === "@gorhom/bottom-sheet") {
|
|
127
|
-
return "inline";
|
|
128
|
-
}
|
|
129
|
-
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
|
|
130
|
-
return `commonjs ${fullPath}`;
|
|
131
|
-
}
|
|
132
|
-
if (/^(react-dom|react)$/.test(fullPath)) {
|
|
133
|
-
return `commonjs ${fullPath}`;
|
|
134
|
-
}
|
|
135
|
-
return true;
|
|
136
|
-
}, "includeModule");
|
|
137
118
|
if (isServer) {
|
|
119
|
+
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
120
|
+
var _a2;
|
|
121
|
+
const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
|
|
122
|
+
const userRes = (_a2 = tamaguiOptions.shouldIncludeModuleServer) == null ? void 0 : _a2.call(tamaguiOptions, {
|
|
123
|
+
context,
|
|
124
|
+
request,
|
|
125
|
+
fullPath
|
|
126
|
+
});
|
|
127
|
+
if (userRes !== void 0) {
|
|
128
|
+
return userRes;
|
|
129
|
+
}
|
|
130
|
+
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
|
|
131
|
+
return `commonjs ${fullPath}`;
|
|
132
|
+
}
|
|
133
|
+
if (fullPath.includes("/moti/") || fullPath.includes("/solito/") || fullPath === "tamagui" || fullPath.startsWith("@tamagui/") || fullPath === "react-native-safe-area-context" || fullPath.startsWith("@react-navigation") || fullPath === "@gorhom/bottom-sheet") {
|
|
134
|
+
return "inline";
|
|
135
|
+
}
|
|
136
|
+
if (/^\@?react-native-/.test(request)) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
}, "includeModule");
|
|
138
141
|
webpackConfig.externals = [
|
|
139
142
|
...webpackConfig.externals.map((external) => {
|
|
140
143
|
if (typeof external !== "function") {
|
|
141
144
|
return external;
|
|
142
145
|
}
|
|
143
146
|
if (isWebpack5) {
|
|
144
|
-
return (
|
|
145
|
-
const
|
|
147
|
+
return async (opts) => {
|
|
148
|
+
const { request, context } = opts;
|
|
149
|
+
const res = includeModule(context, request);
|
|
146
150
|
if (res === "inline") {
|
|
147
|
-
return
|
|
151
|
+
return;
|
|
148
152
|
}
|
|
149
153
|
if (typeof res === "string") {
|
|
150
|
-
return
|
|
154
|
+
return res;
|
|
151
155
|
}
|
|
152
156
|
if (res) {
|
|
153
|
-
return external(
|
|
157
|
+
return await external(opts);
|
|
154
158
|
}
|
|
155
|
-
return cb();
|
|
156
159
|
};
|
|
157
160
|
}
|
|
158
161
|
return (ctx, req, cb) => {
|
|
@@ -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 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 { shouldExclude } from 'tamagui-loader'\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 // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\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')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' 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-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\n // expo fix https://github.com/expo/expo/issues/9999\n 'react-native-web/src': require.resolve('react-native-web/dist'),\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.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n try {\n const regexStr = `\\/react-native-web\\/.*(${excludeExports.join('|')}).*\\/`\n const regex = new RegExp(regexStr)\n console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(\n regex,\n require.resolve('@tamagui/proxy-worm')\n )\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!isServer && !dev) {\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\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 (fullPath === '@tamagui/expo-linear-gradient') {\n return 'inline'\n }\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (fullPath === '@gorhom/bottom-sheet') {\n return 'inline'\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 (res === 'inline') {\n return cb()\n }\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 && !isServer) {\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 if (isNext12) {\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n plugins: [\n 'react-native-reanimated/plugin',\n '@babel/plugin-transform-react-jsx',\n ],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\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: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\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: {\n prefixLogs: prefix,\n ...tamaguiOptions,\n },\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAGjB,0BAAyB;AACzB,0CAA+B;AAC/B,iBAA4B;AAC5B,qBAAmC;AACnC,4BAA8B;AAC9B,qBAAoB;
|
|
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 { shouldExclude } from 'tamagui-loader'\nimport webpack from 'webpack'\n\nexport type WithTamaguiProps = TamaguiOptions & {\n shouldIncludeModuleServer?: (props: {\n context: string\n request: string\n fullPath: string\n }) => boolean | string | undefined\n}\n\nexport const withTamagui = (tamaguiOptions: WithTamaguiProps) => {\n return (nextConfig: any = {}) => {\n return {\n ...nextConfig,\n webpack: (webpackConfig: any, options: any) => {\n const { dir, config, dev, isServer } = options\n\n // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n const isWebpack5 = !!(config.future?.webpack5 || config.webpack5)\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' 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-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\n // expo fix https://github.com/expo/expo/issues/9999\n 'react-native-web/src': require.resolve('react-native-web/dist'),\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.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n try {\n const regexStr = `\\/react-native-web\\/.*(${excludeExports.join('|')}).*\\/`\n const regex = new RegExp(regexStr)\n console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(\n regex,\n require.resolve('@tamagui/proxy-worm')\n )\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!isServer && !dev) {\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\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 if (isServer) {\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n\n const userRes = tamaguiOptions.shouldIncludeModuleServer?.({\n context,\n request,\n fullPath,\n })\n\n if (userRes !== undefined) {\n return userRes\n }\n\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web') ||\n /^(react-dom|react)$/.test(fullPath)\n ) {\n return `commonjs ${fullPath}`\n }\n if (\n fullPath.includes('/moti/') ||\n fullPath.includes('/solito/') ||\n fullPath === 'tamagui' ||\n fullPath.startsWith('@tamagui/') ||\n fullPath === 'react-native-safe-area-context' ||\n fullPath.startsWith('@react-navigation') ||\n fullPath === '@gorhom/bottom-sheet'\n ) {\n return 'inline'\n }\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n return true\n }\n\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 async (opts: { context: string; request: string }) => {\n const { request, context } = opts\n const res = includeModule(context, request)\n if (res === 'inline') {\n return\n }\n if (typeof res === 'string') {\n return res\n }\n if (res) {\n return await external(opts)\n }\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 && !isServer) {\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 if (isNext12) {\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n plugins: [\n 'react-native-reanimated/plugin',\n '@babel/plugin-transform-react-jsx',\n ],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\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: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\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: {\n prefixLogs: prefix,\n ...tamaguiOptions,\n },\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
|
@@ -9,7 +9,8 @@ import { shouldExclude } from "tamagui-loader";
|
|
|
9
9
|
import webpack from "webpack";
|
|
10
10
|
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
11
11
|
return (nextConfig = {}) => {
|
|
12
|
-
return
|
|
12
|
+
return {
|
|
13
|
+
...nextConfig,
|
|
13
14
|
webpack: (webpackConfig, options) => {
|
|
14
15
|
var _a, _b;
|
|
15
16
|
const { dir, config, dev, isServer } = options;
|
|
@@ -17,6 +18,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
17
18
|
globalThis["__DEV__"] = dev;
|
|
18
19
|
}
|
|
19
20
|
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
21
|
+
const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
|
|
20
22
|
const jsxRuntime = require.resolve("react/jsx-runtime");
|
|
21
23
|
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
|
|
22
24
|
const rnw = require.resolve("react-native-web");
|
|
@@ -74,45 +76,47 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
74
76
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
75
77
|
}
|
|
76
78
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
77
|
-
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
78
|
-
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
79
|
-
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
80
|
-
if (fullPath === "@tamagui/expo-linear-gradient") {
|
|
81
|
-
return "inline";
|
|
82
|
-
}
|
|
83
|
-
if (/^\@?react-native-/.test(request)) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
if (fullPath === "@gorhom/bottom-sheet") {
|
|
87
|
-
return "inline";
|
|
88
|
-
}
|
|
89
|
-
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
|
|
90
|
-
return `commonjs ${fullPath}`;
|
|
91
|
-
}
|
|
92
|
-
if (/^(react-dom|react)$/.test(fullPath)) {
|
|
93
|
-
return `commonjs ${fullPath}`;
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
96
|
-
}, "includeModule");
|
|
97
79
|
if (isServer) {
|
|
80
|
+
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
81
|
+
var _a2;
|
|
82
|
+
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
83
|
+
const userRes = (_a2 = tamaguiOptions.shouldIncludeModuleServer) == null ? void 0 : _a2.call(tamaguiOptions, {
|
|
84
|
+
context,
|
|
85
|
+
request,
|
|
86
|
+
fullPath
|
|
87
|
+
});
|
|
88
|
+
if (userRes !== void 0) {
|
|
89
|
+
return userRes;
|
|
90
|
+
}
|
|
91
|
+
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
|
|
92
|
+
return `commonjs ${fullPath}`;
|
|
93
|
+
}
|
|
94
|
+
if (fullPath.includes("/moti/") || fullPath.includes("/solito/") || fullPath === "tamagui" || fullPath.startsWith("@tamagui/") || fullPath === "react-native-safe-area-context" || fullPath.startsWith("@react-navigation") || fullPath === "@gorhom/bottom-sheet") {
|
|
95
|
+
return "inline";
|
|
96
|
+
}
|
|
97
|
+
if (/^\@?react-native-/.test(request)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}, "includeModule");
|
|
98
102
|
webpackConfig.externals = [
|
|
99
103
|
...webpackConfig.externals.map((external) => {
|
|
100
104
|
if (typeof external !== "function") {
|
|
101
105
|
return external;
|
|
102
106
|
}
|
|
103
107
|
if (isWebpack5) {
|
|
104
|
-
return (
|
|
105
|
-
const
|
|
108
|
+
return async (opts) => {
|
|
109
|
+
const { request, context } = opts;
|
|
110
|
+
const res = includeModule(context, request);
|
|
106
111
|
if (res === "inline") {
|
|
107
|
-
return
|
|
112
|
+
return;
|
|
108
113
|
}
|
|
109
114
|
if (typeof res === "string") {
|
|
110
|
-
return
|
|
115
|
+
return res;
|
|
111
116
|
}
|
|
112
117
|
if (res) {
|
|
113
|
-
return external(
|
|
118
|
+
return await external(opts);
|
|
114
119
|
}
|
|
115
|
-
return cb();
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
122
|
return (ctx, req, cb) => {
|
|
@@ -220,7 +224,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
220
224
|
}
|
|
221
225
|
return webpackConfig;
|
|
222
226
|
}
|
|
223
|
-
}
|
|
227
|
+
};
|
|
224
228
|
};
|
|
225
229
|
}, "withTamagui");
|
|
226
230
|
function getSupportedBrowsers(dir, isDevelopment) {
|
|
@@ -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 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 { shouldExclude } from 'tamagui-loader'\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 // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\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')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' 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-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\n // expo fix https://github.com/expo/expo/issues/9999\n 'react-native-web/src': require.resolve('react-native-web/dist'),\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.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n try {\n const regexStr = `\\/react-native-web\\/.*(${excludeExports.join('|')}).*\\/`\n const regex = new RegExp(regexStr)\n console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(\n regex,\n require.resolve('@tamagui/proxy-worm')\n )\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!isServer && !dev) {\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\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 (fullPath === '@tamagui/expo-linear-gradient') {\n return 'inline'\n }\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (fullPath === '@gorhom/bottom-sheet') {\n return 'inline'\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 (res === 'inline') {\n return cb()\n }\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 && !isServer) {\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 if (isNext12) {\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n plugins: [\n 'react-native-reanimated/plugin',\n '@babel/plugin-transform-react-jsx',\n ],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\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: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\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: {\n prefixLogs: prefix,\n ...tamaguiOptions,\n },\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": ";;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;
|
|
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 { shouldExclude } from 'tamagui-loader'\nimport webpack from 'webpack'\n\nexport type WithTamaguiProps = TamaguiOptions & {\n shouldIncludeModuleServer?: (props: {\n context: string\n request: string\n fullPath: string\n }) => boolean | string | undefined\n}\n\nexport const withTamagui = (tamaguiOptions: WithTamaguiProps) => {\n return (nextConfig: any = {}) => {\n return {\n ...nextConfig,\n webpack: (webpackConfig: any, options: any) => {\n const { dir, config, dev, isServer } = options\n\n // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n const isWebpack5 = !!(config.future?.webpack5 || config.webpack5)\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' 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-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\n // expo fix https://github.com/expo/expo/issues/9999\n 'react-native-web/src': require.resolve('react-native-web/dist'),\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.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n try {\n const regexStr = `\\/react-native-web\\/.*(${excludeExports.join('|')}).*\\/`\n const regex = new RegExp(regexStr)\n console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(\n regex,\n require.resolve('@tamagui/proxy-worm')\n )\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!isServer && !dev) {\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\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 if (isServer) {\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n\n const userRes = tamaguiOptions.shouldIncludeModuleServer?.({\n context,\n request,\n fullPath,\n })\n\n if (userRes !== undefined) {\n return userRes\n }\n\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web') ||\n /^(react-dom|react)$/.test(fullPath)\n ) {\n return `commonjs ${fullPath}`\n }\n if (\n fullPath.includes('/moti/') ||\n fullPath.includes('/solito/') ||\n fullPath === 'tamagui' ||\n fullPath.startsWith('@tamagui/') ||\n fullPath === 'react-native-safe-area-context' ||\n fullPath.startsWith('@react-navigation') ||\n fullPath === '@gorhom/bottom-sheet'\n ) {\n return 'inline'\n }\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n return true\n }\n\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 async (opts: { context: string; request: string }) => {\n const { request, context } = opts\n const res = includeModule(context, request)\n if (res === 'inline') {\n return\n }\n if (typeof res === 'string') {\n return res\n }\n if (res) {\n return await external(opts)\n }\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 && !isServer) {\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 if (isNext12) {\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n plugins: [\n 'react-native-reanimated/plugin',\n '@babel/plugin-transform-react-jsx',\n ],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\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: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\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: {\n prefixLogs: prefix,\n ...tamaguiOptions,\n },\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
|
@@ -9,7 +9,8 @@ import { shouldExclude } from "tamagui-loader";
|
|
|
9
9
|
import webpack from "webpack";
|
|
10
10
|
const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
11
11
|
return (nextConfig = {}) => {
|
|
12
|
-
return
|
|
12
|
+
return {
|
|
13
|
+
...nextConfig,
|
|
13
14
|
webpack: (webpackConfig, options) => {
|
|
14
15
|
var _a, _b;
|
|
15
16
|
const { dir, config, dev, isServer } = options;
|
|
@@ -17,6 +18,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
17
18
|
globalThis["__DEV__"] = dev;
|
|
18
19
|
}
|
|
19
20
|
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
21
|
+
const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
|
|
20
22
|
const jsxRuntime = require.resolve("react/jsx-runtime");
|
|
21
23
|
const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
|
|
22
24
|
const rnw = require.resolve("react-native-web");
|
|
@@ -74,45 +76,47 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
74
76
|
webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
|
|
75
77
|
}
|
|
76
78
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
77
|
-
const isWebpack5 = !!((_b = config.future) == null ? void 0 : _b.webpack5) || typeof config.webpack5 === "undefined";
|
|
78
|
-
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
79
|
-
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
80
|
-
if (fullPath === "@tamagui/expo-linear-gradient") {
|
|
81
|
-
return "inline";
|
|
82
|
-
}
|
|
83
|
-
if (/^\@?react-native-/.test(request)) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
if (fullPath === "@gorhom/bottom-sheet") {
|
|
87
|
-
return "inline";
|
|
88
|
-
}
|
|
89
|
-
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
|
|
90
|
-
return `commonjs ${fullPath}`;
|
|
91
|
-
}
|
|
92
|
-
if (/^(react-dom|react)$/.test(fullPath)) {
|
|
93
|
-
return `commonjs ${fullPath}`;
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
96
|
-
}, "includeModule");
|
|
97
79
|
if (isServer) {
|
|
80
|
+
const includeModule = /* @__PURE__ */ __name((context, request) => {
|
|
81
|
+
var _a2;
|
|
82
|
+
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
83
|
+
const userRes = (_a2 = tamaguiOptions.shouldIncludeModuleServer) == null ? void 0 : _a2.call(tamaguiOptions, {
|
|
84
|
+
context,
|
|
85
|
+
request,
|
|
86
|
+
fullPath
|
|
87
|
+
});
|
|
88
|
+
if (userRes !== void 0) {
|
|
89
|
+
return userRes;
|
|
90
|
+
}
|
|
91
|
+
if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
|
|
92
|
+
return `commonjs ${fullPath}`;
|
|
93
|
+
}
|
|
94
|
+
if (fullPath.includes("/moti/") || fullPath.includes("/solito/") || fullPath === "tamagui" || fullPath.startsWith("@tamagui/") || fullPath === "react-native-safe-area-context" || fullPath.startsWith("@react-navigation") || fullPath === "@gorhom/bottom-sheet") {
|
|
95
|
+
return "inline";
|
|
96
|
+
}
|
|
97
|
+
if (/^\@?react-native-/.test(request)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}, "includeModule");
|
|
98
102
|
webpackConfig.externals = [
|
|
99
103
|
...webpackConfig.externals.map((external) => {
|
|
100
104
|
if (typeof external !== "function") {
|
|
101
105
|
return external;
|
|
102
106
|
}
|
|
103
107
|
if (isWebpack5) {
|
|
104
|
-
return (
|
|
105
|
-
const
|
|
108
|
+
return async (opts) => {
|
|
109
|
+
const { request, context } = opts;
|
|
110
|
+
const res = includeModule(context, request);
|
|
106
111
|
if (res === "inline") {
|
|
107
|
-
return
|
|
112
|
+
return;
|
|
108
113
|
}
|
|
109
114
|
if (typeof res === "string") {
|
|
110
|
-
return
|
|
115
|
+
return res;
|
|
111
116
|
}
|
|
112
117
|
if (res) {
|
|
113
|
-
return external(
|
|
118
|
+
return await external(opts);
|
|
114
119
|
}
|
|
115
|
-
return cb();
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
122
|
return (ctx, req, cb) => {
|
|
@@ -220,7 +224,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
220
224
|
}
|
|
221
225
|
return webpackConfig;
|
|
222
226
|
}
|
|
223
|
-
}
|
|
227
|
+
};
|
|
224
228
|
};
|
|
225
229
|
}, "withTamagui");
|
|
226
230
|
function getSupportedBrowsers(dir, isDevelopment) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/next-plugin",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.179+a2bba1a8",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"typings": "types",
|
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
"clean:build": "tamagui-build clean:build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@tamagui/proxy-worm": "^1.0.0-beta.
|
|
22
|
-
"@tamagui/static": "^1.0.0-beta.
|
|
21
|
+
"@tamagui/proxy-worm": "^1.0.0-beta.179+a2bba1a8",
|
|
22
|
+
"@tamagui/static": "^1.0.0-beta.179+a2bba1a8",
|
|
23
23
|
"browserslist": "^4.19.1",
|
|
24
24
|
"css-minimizer-webpack-plugin": "^3.1.3",
|
|
25
25
|
"esbuild-loader": "^2.18.0",
|
|
26
26
|
"next-compose-plugins": "^2.2.1",
|
|
27
|
-
"tamagui-loader": "^1.0.0-beta.
|
|
27
|
+
"tamagui-loader": "^1.0.0-beta.179+a2bba1a8",
|
|
28
28
|
"thread-loader": "^3.0.4"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@tamagui/build": "^1.0.0-beta.
|
|
31
|
+
"@tamagui/build": "^1.0.0-beta.179+a2bba1a8",
|
|
32
32
|
"next": "^12.1.4"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "a2bba1a86895896d70f8d1b91a5faf94adf776e4"
|
|
41
41
|
}
|
package/types/withTamagui.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import { TamaguiOptions } from '@tamagui/static';
|
|
2
|
-
export declare
|
|
2
|
+
export declare type WithTamaguiProps = TamaguiOptions & {
|
|
3
|
+
shouldIncludeModuleServer?: (props: {
|
|
4
|
+
context: string;
|
|
5
|
+
request: string;
|
|
6
|
+
fullPath: string;
|
|
7
|
+
}) => boolean | string | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare const withTamagui: (tamaguiOptions: WithTamaguiProps) => (nextConfig?: any) => any;
|
|
3
10
|
//# sourceMappingURL=withTamagui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAQhD,eAAO,MAAM,WAAW,mBAAoB,
|
|
1
|
+
{"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAQhD,oBAAY,gBAAgB,GAAG,cAAc,GAAG;IAC9C,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,mBAAoB,gBAAgB,mBACtC,GAAG,QA0SxB,CAAA"}
|