@tamagui/vite-plugin 1.0.1-rc.1.4 → 1.0.1-rc.10
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/extract.js +0 -0
- package/dist/cjs/extract.js.map +2 -2
- package/dist/cjs/extractPlugin.js +59 -0
- package/dist/cjs/extractPlugin.js.map +7 -0
- package/dist/cjs/index.js +0 -0
- package/dist/cjs/index.js.map +0 -0
- package/dist/cjs/plugin.js +9 -3
- package/dist/cjs/plugin.js.map +2 -2
- package/dist/esm/extract.js +0 -0
- package/dist/esm/extract.js.map +2 -2
- package/dist/esm/extractPlugin.js +32 -0
- package/dist/esm/extractPlugin.js.map +7 -0
- package/dist/esm/index.js +0 -0
- package/dist/esm/index.js.map +0 -0
- package/dist/esm/plugin.js +9 -3
- package/dist/esm/plugin.js.map +2 -2
- package/dist/jsx/extract.js +0 -0
- package/dist/jsx/extract.js.map +3 -3
- package/dist/jsx/extractPlugin.js +32 -0
- package/dist/jsx/extractPlugin.js.map +7 -0
- package/dist/jsx/index.js +1 -2
- package/dist/jsx/index.js.map +2 -2
- package/dist/jsx/plugin.js +17 -26
- package/dist/jsx/plugin.js.map +2 -2
- package/package.json +6 -6
- package/src/extract.ts +12 -4
- package/src/plugin.ts +15 -7
package/dist/cjs/extract.js
CHANGED
|
File without changes
|
package/dist/cjs/extract.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extract.ts"],
|
|
4
|
-
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,kBAAiB;AAEjB,oBAKO;AACP,qBAAoB;AAEpB,kBAA8B;AAE9B,MAAM,mBAAmB,CAAC,WAAmB,wBAAwB;AACrE,MAAM,0BAA0B;AAEzB,SAAS,qBAAqB,SAAiC;AACpE,QAAM,
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic =\n options.disable || (options.disableDebugAttr && options.disableExtraction)\n\n if (disableStatic) {\n return {\n name: 'tamagui-extract',\n }\n }\n\n let extractor: ReturnType<typeof createExtractor> | null = null\n const cssMap = new Map<string, string>()\n\n let config: ResolvedConfig\n let server: ViteDevServer\n let shouldReturnCSS = true //config.command === 'serve'\n let virtualExt: string\n\n const getAbsoluteVirtualFileId = (filePath: string) => {\n if (filePath.startsWith(config.root)) {\n return filePath\n }\n return normalizePath(path.join(config.root, filePath))\n }\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n buildEnd() {\n extractor!.cleanupBeforeExit()\n },\n\n writeBundle(this, options, bundle) {\n setTimeout(() => {\n // eslint-disable-next-line no-console\n console.warn('some sort of dangling process or osmethign, exit for now...')\n process.exit(0)\n }, 100)\n },\n\n config(_userConfig, env) {\n const include = env.command === 'serve' ? ['@tamagui/core/inject-styles'] : []\n return {\n optimizeDeps: { include },\n }\n },\n\n async configResolved(resolvedConfig) {\n config = resolvedConfig\n extractor = createExtractor({\n logger: resolvedConfig.logger,\n })\n shouldReturnCSS = true\n // TODO postcss work with postcss.config.js\n // packageName = getPackageInfo(config.root).name;\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config);\n // }\n virtualExt = `.tamagui.${shouldReturnCSS ? 'css' : 'js'}`\n },\n\n async resolveId(source) {\n if (source === 'tamagui.css') {\n await extractor!.loadTamagui(options)\n return GLOBAL_CSS_VIRTUAL_PATH\n }\n\n const [validId, query] = source.split('?')\n\n if (!validId.endsWith(virtualExt)) {\n return\n }\n\n // Absolute paths seem to occur often in monorepos, where files are\n // imported from outside the config root.\n const absoluteId = source.startsWith(config.root)\n ? source\n : getAbsoluteVirtualFileId(validId)\n\n // There should always be an entry in the `cssMap` here.\n // The only valid scenario for a missing one is if someone had written\n // a file in their app using the .tamagui.js/.tamagui.css extension\n if (cssMap.has(absoluteId)) {\n // Keep the original query string for HMR.\n return absoluteId + (query ? `?${query}` : '')\n }\n },\n\n /**\n * TODO\n *\n * mainFields module:jsx breaks, so lets just have a mapping here\n * where we load() and map it to the jsx path before transform\n *\n */\n\n load(id, options) {\n const [validId] = id.split('?')\n\n if (validId === GLOBAL_CSS_VIRTUAL_PATH) {\n return extractor!.getTamagui()!.getCSS()\n }\n\n if (!cssMap.has(validId)) {\n return\n }\n\n const css = cssMap.get(validId)\n\n if (typeof css !== 'string') {\n return\n }\n\n if (shouldReturnCSS || !server || server.config.isProduction) {\n return css\n }\n\n return outdent`\n import { injectStyles } from '@tamagui/core/inject-styles';\n\n const inject = (css) => injectStyles({\n filePath: \"${validId}\",\n css\n });\n\n inject(${JSON.stringify(css)});\n\n if (import.meta.hot) {\n import.meta.hot.on('${styleUpdateEvent(validId)}', (css) => {\n inject(css);\n });\n }\n `\n },\n\n async transform(code, id, ssrParam) {\n const [validId] = id.split('?')\n\n if (!validId.endsWith('.tsx')) {\n return\n }\n\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n\n const firstCommentIndex = code.indexOf('// ')\n const { shouldDisable, shouldPrintDebug } = getPragmaOptions({\n source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : '',\n path: validId,\n })\n\n if (shouldDisable) {\n return\n }\n\n const extracted = await extractToClassNames({\n extractor: extractor!,\n source: code,\n sourcePath: validId,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return\n }\n\n const rootRelativeId = `${validId}${virtualExt}`\n const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n\n let source = extracted.js\n\n if (extracted.styles) {\n if (\n server &&\n cssMap.has(absoluteId) &&\n cssMap.get(absoluteId) !== extracted.styles\n ) {\n const { moduleGraph } = server\n const [module] = Array.from(moduleGraph.getModulesByFile(absoluteId) || [])\n\n if (module) {\n moduleGraph.invalidateModule(module)\n\n // Vite uses this timestamp to add `?t=` query string automatically for HMR.\n module.lastHMRTimestamp =\n (module as any).lastInvalidationTimestamp || Date.now()\n }\n\n server.ws.send({\n type: 'custom',\n event: styleUpdateEvent(absoluteId),\n data: extracted.styles,\n })\n }\n\n source = `${source}\\nimport \"${rootRelativeId}\";`\n cssMap.set(absoluteId, extracted.styles)\n }\n\n return {\n code: source.toString(),\n map: extracted.map,\n }\n\n // if (ssr && !process.env.VITE_RSC_BUILD) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== validId) {\n // this.addWatchFile(file)\n // }\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "options", "outdent", "module"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
var extractPlugin_exports = {};
|
|
23
|
+
__export(extractPlugin_exports, {
|
|
24
|
+
tamaguiExtractPlugin: () => tamaguiExtractPlugin
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(extractPlugin_exports);
|
|
27
|
+
var import_path = __toESM(require("path"));
|
|
28
|
+
var import_vite = require("vite");
|
|
29
|
+
const styleUpdateEvent = (fileId) => `tamagui-style-update:${fileId}`;
|
|
30
|
+
function tamaguiExtractPlugin(options) {
|
|
31
|
+
let config;
|
|
32
|
+
let server;
|
|
33
|
+
const cssMap = /* @__PURE__ */ new Map();
|
|
34
|
+
let virtualExt;
|
|
35
|
+
let packageName;
|
|
36
|
+
const getAbsoluteVirtualFileId = (source) => (0, import_vite.normalizePath)(import_path.default.join(config.root, source));
|
|
37
|
+
return {
|
|
38
|
+
name: "tamagui-extract",
|
|
39
|
+
enforce: "pre",
|
|
40
|
+
configureServer(_server) {
|
|
41
|
+
server = _server;
|
|
42
|
+
},
|
|
43
|
+
config(_userConfig, env) {
|
|
44
|
+
},
|
|
45
|
+
async configResolved(resolvedConfig) {
|
|
46
|
+
},
|
|
47
|
+
resolveId(source) {
|
|
48
|
+
},
|
|
49
|
+
load(id) {
|
|
50
|
+
},
|
|
51
|
+
async transform(code, id, ssrParam) {
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
tamaguiExtractPlugin
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=extractPlugin.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/extractPlugin.ts"],
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract/blob/master/packages/vite-plugin/src/index.ts\n\nimport path from 'path'\n\nimport type { TamaguiOptions } from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n let config: ResolvedConfig\n let server: ViteDevServer\n const cssMap = new Map<string, string>()\n let virtualExt: string\n let packageName: string\n\n const getAbsoluteVirtualFileId = (source: string) => normalizePath(path.join(config.root, source))\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n config(_userConfig, env) {\n // const include = env.command === 'serve' ? ['@tamagui/css/injectStyles'] : []\n // return {\n // optimizeDeps: { include },\n // ssr: {\n // external: ['@tamagui/css', '@tamagui/css/fileScope', '@tamagui/css/adapter'],\n // },\n // }\n },\n\n async configResolved(resolvedConfig) {\n // config = resolvedConfig\n // packageName = getPackageInfo(config.root).name\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config)\n // }\n // virtualExt = `.vanilla.${config.command === 'serve' ? 'js' : 'css'}`\n },\n\n resolveId(source) {\n // if (!source.endsWith(virtualExt)) {\n // return\n // }\n // // Absolute paths seem to occur often in monorepos, where files are\n // // imported from outside the config root.\n // const absoluteId = source.startsWith(config.root) ? source : getAbsoluteVirtualFileId(source)\n // // There should always be an entry in the `cssMap` here.\n // // The only valid scenario for a missing one is if someone had written\n // // a file in their app using the .vanilla.js/.vanilla.css extension\n // if (cssMap.has(absoluteId)) {\n // return absoluteId\n // }\n },\n\n load(id) {\n // if (!cssMap.has(id)) {\n // return\n // }\n // const css = cssMap.get(id)\n // if (typeof css !== 'string') {\n // return\n // }\n // if (!server || server.config.isProduction) {\n // return css\n // }\n // return outdent`\n // import { injectStyles } from '@tamagui/css/injectStyles';\n // const inject = (css) => injectStyles({\n // fileScope: ${JSON.stringify({ filePath: id })},\n // css\n // });\n // inject(${JSON.stringify(css)});\n // import.meta.hot.on('${styleUpdateEvent(id)}', (css) => {\n // inject(css);\n // });\n // `\n },\n\n async transform(code, id, ssrParam) {\n // if (!cssFileFilter.test(id)) {\n // return null\n // }\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n // const index = id.indexOf('?')\n // const validId = index === -1 ? id : id.substring(0, index)\n // if (ssr) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== id) {\n // this.addWatchFile(file)\n // }\n // }\n // const output = await processVanillaFile({\n // source,\n // filePath: validId,\n // identOption: identifiers ?? (config.mode === 'production' ? 'short' : 'debug'),\n // serializeVirtualCssPath: async ({ fileScope, source }) => {\n // const rootRelativeId = `${fileScope.filePath}${virtualExt}`\n // const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n // let cssSource = source\n // if (postCssConfig) {\n // const postCssResult = await (await import('postcss'))\n // .default(postCssConfig.plugins)\n // .process(source, {\n // ...postCssConfig.options,\n // from: undefined,\n // map: false,\n // })\n // cssSource = postCssResult.css\n // }\n // if (server && cssMap.has(absoluteId) && cssMap.get(absoluteId) !== source) {\n // const { moduleGraph } = server\n // const module = moduleGraph.getModuleById(absoluteId)\n // if (module) {\n // moduleGraph.invalidateModule(module)\n // }\n // server.ws.send({\n // type: 'custom',\n // event: styleUpdateEvent(absoluteId),\n // data: cssSource,\n // })\n // }\n // cssMap.set(absoluteId, cssSource)\n // // We use the root relative id here to ensure file contents (content-hashes)\n // // are consistent across build machines\n // return `import \"${rootRelativeId}\";`\n // },\n // })\n // return {\n // code: output,\n // map: { mappings: '' },\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,kBAAiB;AAKjB,kBAA8B;AAE9B,MAAM,mBAAmB,CAAC,WAAmB,wBAAwB;AAE9D,8BAA8B,SAAiC;AACpE,MAAI;AACJ,MAAI;AACJ,QAAM,SAAS,oBAAI,IAAoB;AACvC,MAAI;AACJ,MAAI;AAEJ,QAAM,2BAA2B,CAAC,WAAmB,+BAAc,oBAAK,KAAK,OAAO,MAAM,MAAM,CAAC;AAEjG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,gBAAgB,SAAS;AACvB,eAAS;AAAA,IACX;AAAA,IAEA,OAAO,aAAa,KAAK;AAAA,IAQzB;AAAA,IAEA,MAAM,eAAe,gBAAgB;AAAA,IAOrC;AAAA,IAEA,UAAU,QAAQ;AAAA,IAalB;AAAA,IAEA,KAAK,IAAI;AAAA,IAsBT;AAAA,IAEA,MAAM,UAAU,MAAM,IAAI,UAAU;AAAA,IAwEpC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
File without changes
|
package/dist/cjs/index.js.map
CHANGED
|
File without changes
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -22,7 +22,9 @@ __export(plugin_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(plugin_exports);
|
|
24
24
|
function tamaguiPlugin(options) {
|
|
25
|
-
const components = [
|
|
25
|
+
const components = [
|
|
26
|
+
.../* @__PURE__ */ new Set([...options.components, "tamagui", "@tamagui/core"])
|
|
27
|
+
];
|
|
26
28
|
const noExternalSSR = new RegExp(
|
|
27
29
|
`${components.join("|")}|react-native|expo-linear-gradient`,
|
|
28
30
|
"ig"
|
|
@@ -38,10 +40,14 @@ function tamaguiPlugin(options) {
|
|
|
38
40
|
_frameTimestamp: void 0,
|
|
39
41
|
_WORKLET: false,
|
|
40
42
|
...process.env.NODE_ENV !== "test" && {
|
|
41
|
-
"process.env.TAMAGUI_TARGET": JSON.stringify(
|
|
43
|
+
"process.env.TAMAGUI_TARGET": JSON.stringify(
|
|
44
|
+
process.env.TAMAGUI_TARGET || "web"
|
|
45
|
+
),
|
|
42
46
|
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || env.mode),
|
|
43
47
|
"process.env.ENABLE_RSC": JSON.stringify(process.env.ENABLE_RSC || ""),
|
|
44
|
-
"process.env.ENABLE_STEPS": JSON.stringify(
|
|
48
|
+
"process.env.ENABLE_STEPS": JSON.stringify(
|
|
49
|
+
process.env.ENABLE_STEPS || ""
|
|
50
|
+
),
|
|
45
51
|
"process.env.IS_STATIC": JSON.stringify(false)
|
|
46
52
|
}
|
|
47
53
|
},
|
package/dist/cjs/plugin.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/plugin.ts"],
|
|
4
|
-
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\n\n/**\n * For some reason envPlugin doesnt work for vitest, but process: { env: {} } breaks vitest\n */\n\nexport function tamaguiPlugin(\n options: TamaguiOptions & {\n useReactNativeWebLite?: boolean\n }
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,cACd,SAGQ;AACR,QAAM,aAAa,
|
|
4
|
+
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\n\n/**\n * For some reason envPlugin doesnt work for vitest, but process: { env: {} } breaks vitest\n */\n\nexport function tamaguiPlugin(\n options: TamaguiOptions & {\n useReactNativeWebLite?: boolean\n },\n): Plugin {\n const components = [\n ...new Set([...options.components, 'tamagui', '@tamagui/core']),\n ]\n const noExternalSSR = new RegExp(\n `${components.join('|')}|react-native|expo-linear-gradient`,\n 'ig',\n )\n\n const plugin: Plugin = {\n name: 'tamagui-base',\n enforce: 'pre',\n\n config(userConfig, env) {\n return {\n plugins: [\n //\n // envPlugin(['NODE_ENV', 'TAMAGUI_TARGET', 'ENABLE_RSC']),\n // viteCommonjs(),\n ],\n define: {\n // reanimated support\n 'global.__x': {},\n _frameTimestamp: undefined,\n _WORKLET: false,\n ...(process.env.NODE_ENV !== 'test' && {\n 'process.env.TAMAGUI_TARGET': JSON.stringify(\n process.env.TAMAGUI_TARGET || 'web',\n ),\n 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode),\n 'process.env.ENABLE_RSC': JSON.stringify(process.env.ENABLE_RSC || ''),\n 'process.env.ENABLE_STEPS': JSON.stringify(\n process.env.ENABLE_STEPS || '',\n ),\n 'process.env.IS_STATIC': JSON.stringify(false),\n }),\n },\n // build: {\n // commonjsOptions: {\n // transformMixedEsModules: true,\n // },\n // },\n ssr: {\n noExternal: noExternalSSR,\n },\n optimizeDeps: {\n // disabled: false,\n include: ['styleq', 'react-native-reanimated'],\n esbuildOptions: {\n jsx: 'transform',\n // plugins: [\n // esbuildCommonjs([\n // 'styleq',\n // 'inline-style-prefixer',\n // 'create-react-class',\n // 'copy-to-clipboard',\n // ]),\n // ],\n resolveExtensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n loader: {\n '.js': 'jsx',\n },\n },\n },\n resolve: {\n // for once it extracts\n // mainFields: ['module:jsx', 'module', 'jsnext:main', 'jsnext', 'main'],\n extensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n alias: {\n 'react-native/Libraries/Renderer/shims/ReactFabric':\n '@tamagui/proxy-worm',\n 'react-native/Libraries/Utilities/codegenNativeComponent':\n '@tamagui/proxy-worm',\n 'react-native-svg': '@tamagui/react-native-svg',\n 'react-native': 'react-native-web',\n ...(options.useReactNativeWebLite && {\n 'react-native': 'react-native-web-lite',\n 'react-native-web': 'react-native-web-lite',\n }),\n },\n },\n }\n },\n }\n\n return plugin\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,cACd,SAGQ;AACR,QAAM,aAAa;AAAA,IACjB,GAAG,oBAAI,IAAI,CAAC,GAAG,QAAQ,YAAY,WAAW,eAAe,CAAC;AAAA,EAChE;AACA,QAAM,gBAAgB,IAAI;AAAA,IACxB,GAAG,WAAW,KAAK,GAAG;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,SAAiB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IAET,OAAO,YAAY,KAAK;AACtB,aAAO;AAAA,QACL,SAAS,CAIT;AAAA,QACA,QAAQ;AAAA,UAEN,cAAc,CAAC;AAAA,UACf,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,GAAI,QAAQ,IAAI,aAAa,UAAU;AAAA,YACrC,8BAA8B,KAAK;AAAA,cACjC,QAAQ,IAAI,kBAAkB;AAAA,YAChC;AAAA,YACA,wBAAwB,KAAK,UAAU,QAAQ,IAAI,YAAY,IAAI,IAAI;AAAA,YACvE,0BAA0B,KAAK,UAAU,QAAQ,IAAI,cAAc,EAAE;AAAA,YACrE,4BAA4B,KAAK;AAAA,cAC/B,QAAQ,IAAI,gBAAgB;AAAA,YAC9B;AAAA,YACA,yBAAyB,KAAK,UAAU,KAAK;AAAA,UAC/C;AAAA,QACF;AAAA,QAMA,KAAK;AAAA,UACH,YAAY;AAAA,QACd;AAAA,QACA,cAAc;AAAA,UAEZ,SAAS,CAAC,UAAU,yBAAyB;AAAA,UAC7C,gBAAgB;AAAA,YACd,KAAK;AAAA,YASL,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UAGP,YAAY;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,qDACE;AAAA,YACF,2DACE;AAAA,YACF,oBAAoB;AAAA,YACpB,gBAAgB;AAAA,YAChB,GAAI,QAAQ,yBAAyB;AAAA,cACnC,gBAAgB;AAAA,cAChB,oBAAoB;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/extract.js
CHANGED
|
File without changes
|
package/dist/esm/extract.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extract.ts"],
|
|
4
|
-
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic
|
|
5
|
-
"mappings": "AAEA,OAAO,UAAU;AAEjB;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,aAAa;AAEpB,SAAS,qBAAqB;AAE9B,MAAM,mBAAmB,CAAC,WAAmB,wBAAwB;AACrE,MAAM,0BAA0B;AAEzB,SAAS,qBAAqB,SAAiC;AACpE,QAAM,
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic =\n options.disable || (options.disableDebugAttr && options.disableExtraction)\n\n if (disableStatic) {\n return {\n name: 'tamagui-extract',\n }\n }\n\n let extractor: ReturnType<typeof createExtractor> | null = null\n const cssMap = new Map<string, string>()\n\n let config: ResolvedConfig\n let server: ViteDevServer\n let shouldReturnCSS = true //config.command === 'serve'\n let virtualExt: string\n\n const getAbsoluteVirtualFileId = (filePath: string) => {\n if (filePath.startsWith(config.root)) {\n return filePath\n }\n return normalizePath(path.join(config.root, filePath))\n }\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n buildEnd() {\n extractor!.cleanupBeforeExit()\n },\n\n writeBundle(this, options, bundle) {\n setTimeout(() => {\n // eslint-disable-next-line no-console\n console.warn('some sort of dangling process or osmethign, exit for now...')\n process.exit(0)\n }, 100)\n },\n\n config(_userConfig, env) {\n const include = env.command === 'serve' ? ['@tamagui/core/inject-styles'] : []\n return {\n optimizeDeps: { include },\n }\n },\n\n async configResolved(resolvedConfig) {\n config = resolvedConfig\n extractor = createExtractor({\n logger: resolvedConfig.logger,\n })\n shouldReturnCSS = true\n // TODO postcss work with postcss.config.js\n // packageName = getPackageInfo(config.root).name;\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config);\n // }\n virtualExt = `.tamagui.${shouldReturnCSS ? 'css' : 'js'}`\n },\n\n async resolveId(source) {\n if (source === 'tamagui.css') {\n await extractor!.loadTamagui(options)\n return GLOBAL_CSS_VIRTUAL_PATH\n }\n\n const [validId, query] = source.split('?')\n\n if (!validId.endsWith(virtualExt)) {\n return\n }\n\n // Absolute paths seem to occur often in monorepos, where files are\n // imported from outside the config root.\n const absoluteId = source.startsWith(config.root)\n ? source\n : getAbsoluteVirtualFileId(validId)\n\n // There should always be an entry in the `cssMap` here.\n // The only valid scenario for a missing one is if someone had written\n // a file in their app using the .tamagui.js/.tamagui.css extension\n if (cssMap.has(absoluteId)) {\n // Keep the original query string for HMR.\n return absoluteId + (query ? `?${query}` : '')\n }\n },\n\n /**\n * TODO\n *\n * mainFields module:jsx breaks, so lets just have a mapping here\n * where we load() and map it to the jsx path before transform\n *\n */\n\n load(id, options) {\n const [validId] = id.split('?')\n\n if (validId === GLOBAL_CSS_VIRTUAL_PATH) {\n return extractor!.getTamagui()!.getCSS()\n }\n\n if (!cssMap.has(validId)) {\n return\n }\n\n const css = cssMap.get(validId)\n\n if (typeof css !== 'string') {\n return\n }\n\n if (shouldReturnCSS || !server || server.config.isProduction) {\n return css\n }\n\n return outdent`\n import { injectStyles } from '@tamagui/core/inject-styles';\n\n const inject = (css) => injectStyles({\n filePath: \"${validId}\",\n css\n });\n\n inject(${JSON.stringify(css)});\n\n if (import.meta.hot) {\n import.meta.hot.on('${styleUpdateEvent(validId)}', (css) => {\n inject(css);\n });\n }\n `\n },\n\n async transform(code, id, ssrParam) {\n const [validId] = id.split('?')\n\n if (!validId.endsWith('.tsx')) {\n return\n }\n\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n\n const firstCommentIndex = code.indexOf('// ')\n const { shouldDisable, shouldPrintDebug } = getPragmaOptions({\n source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : '',\n path: validId,\n })\n\n if (shouldDisable) {\n return\n }\n\n const extracted = await extractToClassNames({\n extractor: extractor!,\n source: code,\n sourcePath: validId,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return\n }\n\n const rootRelativeId = `${validId}${virtualExt}`\n const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n\n let source = extracted.js\n\n if (extracted.styles) {\n if (\n server &&\n cssMap.has(absoluteId) &&\n cssMap.get(absoluteId) !== extracted.styles\n ) {\n const { moduleGraph } = server\n const [module] = Array.from(moduleGraph.getModulesByFile(absoluteId) || [])\n\n if (module) {\n moduleGraph.invalidateModule(module)\n\n // Vite uses this timestamp to add `?t=` query string automatically for HMR.\n module.lastHMRTimestamp =\n (module as any).lastInvalidationTimestamp || Date.now()\n }\n\n server.ws.send({\n type: 'custom',\n event: styleUpdateEvent(absoluteId),\n data: extracted.styles,\n })\n }\n\n source = `${source}\\nimport \"${rootRelativeId}\";`\n cssMap.set(absoluteId, extracted.styles)\n }\n\n return {\n code: source.toString(),\n map: extracted.map,\n }\n\n // if (ssr && !process.env.VITE_RSC_BUILD) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== validId) {\n // this.addWatchFile(file)\n // }\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["options"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { normalizePath } from "vite";
|
|
3
|
+
const styleUpdateEvent = (fileId) => `tamagui-style-update:${fileId}`;
|
|
4
|
+
function tamaguiExtractPlugin(options) {
|
|
5
|
+
let config;
|
|
6
|
+
let server;
|
|
7
|
+
const cssMap = /* @__PURE__ */ new Map();
|
|
8
|
+
let virtualExt;
|
|
9
|
+
let packageName;
|
|
10
|
+
const getAbsoluteVirtualFileId = (source) => normalizePath(path.join(config.root, source));
|
|
11
|
+
return {
|
|
12
|
+
name: "tamagui-extract",
|
|
13
|
+
enforce: "pre",
|
|
14
|
+
configureServer(_server) {
|
|
15
|
+
server = _server;
|
|
16
|
+
},
|
|
17
|
+
config(_userConfig, env) {
|
|
18
|
+
},
|
|
19
|
+
async configResolved(resolvedConfig) {
|
|
20
|
+
},
|
|
21
|
+
resolveId(source) {
|
|
22
|
+
},
|
|
23
|
+
load(id) {
|
|
24
|
+
},
|
|
25
|
+
async transform(code, id, ssrParam) {
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
tamaguiExtractPlugin
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=extractPlugin.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/extractPlugin.ts"],
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract/blob/master/packages/vite-plugin/src/index.ts\n\nimport path from 'path'\n\nimport type { TamaguiOptions } from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n let config: ResolvedConfig\n let server: ViteDevServer\n const cssMap = new Map<string, string>()\n let virtualExt: string\n let packageName: string\n\n const getAbsoluteVirtualFileId = (source: string) => normalizePath(path.join(config.root, source))\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n config(_userConfig, env) {\n // const include = env.command === 'serve' ? ['@tamagui/css/injectStyles'] : []\n // return {\n // optimizeDeps: { include },\n // ssr: {\n // external: ['@tamagui/css', '@tamagui/css/fileScope', '@tamagui/css/adapter'],\n // },\n // }\n },\n\n async configResolved(resolvedConfig) {\n // config = resolvedConfig\n // packageName = getPackageInfo(config.root).name\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config)\n // }\n // virtualExt = `.vanilla.${config.command === 'serve' ? 'js' : 'css'}`\n },\n\n resolveId(source) {\n // if (!source.endsWith(virtualExt)) {\n // return\n // }\n // // Absolute paths seem to occur often in monorepos, where files are\n // // imported from outside the config root.\n // const absoluteId = source.startsWith(config.root) ? source : getAbsoluteVirtualFileId(source)\n // // There should always be an entry in the `cssMap` here.\n // // The only valid scenario for a missing one is if someone had written\n // // a file in their app using the .vanilla.js/.vanilla.css extension\n // if (cssMap.has(absoluteId)) {\n // return absoluteId\n // }\n },\n\n load(id) {\n // if (!cssMap.has(id)) {\n // return\n // }\n // const css = cssMap.get(id)\n // if (typeof css !== 'string') {\n // return\n // }\n // if (!server || server.config.isProduction) {\n // return css\n // }\n // return outdent`\n // import { injectStyles } from '@tamagui/css/injectStyles';\n // const inject = (css) => injectStyles({\n // fileScope: ${JSON.stringify({ filePath: id })},\n // css\n // });\n // inject(${JSON.stringify(css)});\n // import.meta.hot.on('${styleUpdateEvent(id)}', (css) => {\n // inject(css);\n // });\n // `\n },\n\n async transform(code, id, ssrParam) {\n // if (!cssFileFilter.test(id)) {\n // return null\n // }\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n // const index = id.indexOf('?')\n // const validId = index === -1 ? id : id.substring(0, index)\n // if (ssr) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== id) {\n // this.addWatchFile(file)\n // }\n // }\n // const output = await processVanillaFile({\n // source,\n // filePath: validId,\n // identOption: identifiers ?? (config.mode === 'production' ? 'short' : 'debug'),\n // serializeVirtualCssPath: async ({ fileScope, source }) => {\n // const rootRelativeId = `${fileScope.filePath}${virtualExt}`\n // const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n // let cssSource = source\n // if (postCssConfig) {\n // const postCssResult = await (await import('postcss'))\n // .default(postCssConfig.plugins)\n // .process(source, {\n // ...postCssConfig.options,\n // from: undefined,\n // map: false,\n // })\n // cssSource = postCssResult.css\n // }\n // if (server && cssMap.has(absoluteId) && cssMap.get(absoluteId) !== source) {\n // const { moduleGraph } = server\n // const module = moduleGraph.getModuleById(absoluteId)\n // if (module) {\n // moduleGraph.invalidateModule(module)\n // }\n // server.ws.send({\n // type: 'custom',\n // event: styleUpdateEvent(absoluteId),\n // data: cssSource,\n // })\n // }\n // cssMap.set(absoluteId, cssSource)\n // // We use the root relative id here to ensure file contents (content-hashes)\n // // are consistent across build machines\n // return `import \"${rootRelativeId}\";`\n // },\n // })\n // return {\n // code: output,\n // map: { mappings: '' },\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEA;AAKA;AAEA,MAAM,mBAAmB,CAAC,WAAmB,wBAAwB;AAE9D,8BAA8B,SAAiC;AACpE,MAAI;AACJ,MAAI;AACJ,QAAM,SAAS,oBAAI,IAAoB;AACvC,MAAI;AACJ,MAAI;AAEJ,QAAM,2BAA2B,CAAC,WAAmB,cAAc,KAAK,KAAK,OAAO,MAAM,MAAM,CAAC;AAEjG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,gBAAgB,SAAS;AACvB,eAAS;AAAA,IACX;AAAA,IAEA,OAAO,aAAa,KAAK;AAAA,IAQzB;AAAA,IAEA,MAAM,eAAe,gBAAgB;AAAA,IAOrC;AAAA,IAEA,UAAU,QAAQ;AAAA,IAalB;AAAA,IAEA,KAAK,IAAI;AAAA,IAsBT;AAAA,IAEA,MAAM,UAAU,MAAM,IAAI,UAAU;AAAA,IAwEpC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/esm/index.js
CHANGED
|
File without changes
|
package/dist/esm/index.js.map
CHANGED
|
File without changes
|
package/dist/esm/plugin.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
function tamaguiPlugin(options) {
|
|
2
|
-
const components = [
|
|
2
|
+
const components = [
|
|
3
|
+
.../* @__PURE__ */ new Set([...options.components, "tamagui", "@tamagui/core"])
|
|
4
|
+
];
|
|
3
5
|
const noExternalSSR = new RegExp(
|
|
4
6
|
`${components.join("|")}|react-native|expo-linear-gradient`,
|
|
5
7
|
"ig"
|
|
@@ -15,10 +17,14 @@ function tamaguiPlugin(options) {
|
|
|
15
17
|
_frameTimestamp: void 0,
|
|
16
18
|
_WORKLET: false,
|
|
17
19
|
...process.env.NODE_ENV !== "test" && {
|
|
18
|
-
"process.env.TAMAGUI_TARGET": JSON.stringify(
|
|
20
|
+
"process.env.TAMAGUI_TARGET": JSON.stringify(
|
|
21
|
+
process.env.TAMAGUI_TARGET || "web"
|
|
22
|
+
),
|
|
19
23
|
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || env.mode),
|
|
20
24
|
"process.env.ENABLE_RSC": JSON.stringify(process.env.ENABLE_RSC || ""),
|
|
21
|
-
"process.env.ENABLE_STEPS": JSON.stringify(
|
|
25
|
+
"process.env.ENABLE_STEPS": JSON.stringify(
|
|
26
|
+
process.env.ENABLE_STEPS || ""
|
|
27
|
+
),
|
|
22
28
|
"process.env.IS_STATIC": JSON.stringify(false)
|
|
23
29
|
}
|
|
24
30
|
},
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/plugin.ts"],
|
|
4
|
-
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\n\n/**\n * For some reason envPlugin doesnt work for vitest, but process: { env: {} } breaks vitest\n */\n\nexport function tamaguiPlugin(\n options: TamaguiOptions & {\n useReactNativeWebLite?: boolean\n }
|
|
5
|
-
"mappings": "AAOO,SAAS,cACd,SAGQ;AACR,QAAM,aAAa,
|
|
4
|
+
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\n\n/**\n * For some reason envPlugin doesnt work for vitest, but process: { env: {} } breaks vitest\n */\n\nexport function tamaguiPlugin(\n options: TamaguiOptions & {\n useReactNativeWebLite?: boolean\n },\n): Plugin {\n const components = [\n ...new Set([...options.components, 'tamagui', '@tamagui/core']),\n ]\n const noExternalSSR = new RegExp(\n `${components.join('|')}|react-native|expo-linear-gradient`,\n 'ig',\n )\n\n const plugin: Plugin = {\n name: 'tamagui-base',\n enforce: 'pre',\n\n config(userConfig, env) {\n return {\n plugins: [\n //\n // envPlugin(['NODE_ENV', 'TAMAGUI_TARGET', 'ENABLE_RSC']),\n // viteCommonjs(),\n ],\n define: {\n // reanimated support\n 'global.__x': {},\n _frameTimestamp: undefined,\n _WORKLET: false,\n ...(process.env.NODE_ENV !== 'test' && {\n 'process.env.TAMAGUI_TARGET': JSON.stringify(\n process.env.TAMAGUI_TARGET || 'web',\n ),\n 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode),\n 'process.env.ENABLE_RSC': JSON.stringify(process.env.ENABLE_RSC || ''),\n 'process.env.ENABLE_STEPS': JSON.stringify(\n process.env.ENABLE_STEPS || '',\n ),\n 'process.env.IS_STATIC': JSON.stringify(false),\n }),\n },\n // build: {\n // commonjsOptions: {\n // transformMixedEsModules: true,\n // },\n // },\n ssr: {\n noExternal: noExternalSSR,\n },\n optimizeDeps: {\n // disabled: false,\n include: ['styleq', 'react-native-reanimated'],\n esbuildOptions: {\n jsx: 'transform',\n // plugins: [\n // esbuildCommonjs([\n // 'styleq',\n // 'inline-style-prefixer',\n // 'create-react-class',\n // 'copy-to-clipboard',\n // ]),\n // ],\n resolveExtensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n loader: {\n '.js': 'jsx',\n },\n },\n },\n resolve: {\n // for once it extracts\n // mainFields: ['module:jsx', 'module', 'jsnext:main', 'jsnext', 'main'],\n extensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n alias: {\n 'react-native/Libraries/Renderer/shims/ReactFabric':\n '@tamagui/proxy-worm',\n 'react-native/Libraries/Utilities/codegenNativeComponent':\n '@tamagui/proxy-worm',\n 'react-native-svg': '@tamagui/react-native-svg',\n 'react-native': 'react-native-web',\n ...(options.useReactNativeWebLite && {\n 'react-native': 'react-native-web-lite',\n 'react-native-web': 'react-native-web-lite',\n }),\n },\n },\n }\n },\n }\n\n return plugin\n}\n"],
|
|
5
|
+
"mappings": "AAOO,SAAS,cACd,SAGQ;AACR,QAAM,aAAa;AAAA,IACjB,GAAG,oBAAI,IAAI,CAAC,GAAG,QAAQ,YAAY,WAAW,eAAe,CAAC;AAAA,EAChE;AACA,QAAM,gBAAgB,IAAI;AAAA,IACxB,GAAG,WAAW,KAAK,GAAG;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,SAAiB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IAET,OAAO,YAAY,KAAK;AACtB,aAAO;AAAA,QACL,SAAS,CAIT;AAAA,QACA,QAAQ;AAAA,UAEN,cAAc,CAAC;AAAA,UACf,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,GAAI,QAAQ,IAAI,aAAa,UAAU;AAAA,YACrC,8BAA8B,KAAK;AAAA,cACjC,QAAQ,IAAI,kBAAkB;AAAA,YAChC;AAAA,YACA,wBAAwB,KAAK,UAAU,QAAQ,IAAI,YAAY,IAAI,IAAI;AAAA,YACvE,0BAA0B,KAAK,UAAU,QAAQ,IAAI,cAAc,EAAE;AAAA,YACrE,4BAA4B,KAAK;AAAA,cAC/B,QAAQ,IAAI,gBAAgB;AAAA,YAC9B;AAAA,YACA,yBAAyB,KAAK,UAAU,KAAK;AAAA,UAC/C;AAAA,QACF;AAAA,QAMA,KAAK;AAAA,UACH,YAAY;AAAA,QACd;AAAA,QACA,cAAc;AAAA,UAEZ,SAAS,CAAC,UAAU,yBAAyB;AAAA,UAC7C,gBAAgB;AAAA,YACd,KAAK;AAAA,YASL,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UAGP,YAAY;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,qDACE;AAAA,YACF,2DACE;AAAA,YACF,oBAAoB;AAAA,YACpB,gBAAgB;AAAA,YAChB,GAAI,QAAQ,yBAAyB;AAAA,cACnC,gBAAgB;AAAA,cAChB,oBAAoB;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/extract.js
CHANGED
|
File without changes
|
package/dist/jsx/extract.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extract.ts"],
|
|
4
|
-
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic
|
|
5
|
-
"mappings": "AAEA
|
|
6
|
-
"names": [
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract\n\nimport path from 'path'\n\nimport {\n TamaguiOptions,\n createExtractor,\n extractToClassNames,\n getPragmaOptions,\n} from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\nconst GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n const disableStatic =\n options.disable || (options.disableDebugAttr && options.disableExtraction)\n\n if (disableStatic) {\n return {\n name: 'tamagui-extract',\n }\n }\n\n let extractor: ReturnType<typeof createExtractor> | null = null\n const cssMap = new Map<string, string>()\n\n let config: ResolvedConfig\n let server: ViteDevServer\n let shouldReturnCSS = true //config.command === 'serve'\n let virtualExt: string\n\n const getAbsoluteVirtualFileId = (filePath: string) => {\n if (filePath.startsWith(config.root)) {\n return filePath\n }\n return normalizePath(path.join(config.root, filePath))\n }\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n buildEnd() {\n extractor!.cleanupBeforeExit()\n },\n\n writeBundle(this, options, bundle) {\n setTimeout(() => {\n // eslint-disable-next-line no-console\n console.warn('some sort of dangling process or osmethign, exit for now...')\n process.exit(0)\n }, 100)\n },\n\n config(_userConfig, env) {\n const include = env.command === 'serve' ? ['@tamagui/core/inject-styles'] : []\n return {\n optimizeDeps: { include },\n }\n },\n\n async configResolved(resolvedConfig) {\n config = resolvedConfig\n extractor = createExtractor({\n logger: resolvedConfig.logger,\n })\n shouldReturnCSS = true\n // TODO postcss work with postcss.config.js\n // packageName = getPackageInfo(config.root).name;\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config);\n // }\n virtualExt = `.tamagui.${shouldReturnCSS ? 'css' : 'js'}`\n },\n\n async resolveId(source) {\n if (source === 'tamagui.css') {\n await extractor!.loadTamagui(options)\n return GLOBAL_CSS_VIRTUAL_PATH\n }\n\n const [validId, query] = source.split('?')\n\n if (!validId.endsWith(virtualExt)) {\n return\n }\n\n // Absolute paths seem to occur often in monorepos, where files are\n // imported from outside the config root.\n const absoluteId = source.startsWith(config.root)\n ? source\n : getAbsoluteVirtualFileId(validId)\n\n // There should always be an entry in the `cssMap` here.\n // The only valid scenario for a missing one is if someone had written\n // a file in their app using the .tamagui.js/.tamagui.css extension\n if (cssMap.has(absoluteId)) {\n // Keep the original query string for HMR.\n return absoluteId + (query ? `?${query}` : '')\n }\n },\n\n /**\n * TODO\n *\n * mainFields module:jsx breaks, so lets just have a mapping here\n * where we load() and map it to the jsx path before transform\n *\n */\n\n load(id, options) {\n const [validId] = id.split('?')\n\n if (validId === GLOBAL_CSS_VIRTUAL_PATH) {\n return extractor!.getTamagui()!.getCSS()\n }\n\n if (!cssMap.has(validId)) {\n return\n }\n\n const css = cssMap.get(validId)\n\n if (typeof css !== 'string') {\n return\n }\n\n if (shouldReturnCSS || !server || server.config.isProduction) {\n return css\n }\n\n return outdent`\n import { injectStyles } from '@tamagui/core/inject-styles';\n\n const inject = (css) => injectStyles({\n filePath: \"${validId}\",\n css\n });\n\n inject(${JSON.stringify(css)});\n\n if (import.meta.hot) {\n import.meta.hot.on('${styleUpdateEvent(validId)}', (css) => {\n inject(css);\n });\n }\n `\n },\n\n async transform(code, id, ssrParam) {\n const [validId] = id.split('?')\n\n if (!validId.endsWith('.tsx')) {\n return\n }\n\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n\n const firstCommentIndex = code.indexOf('// ')\n const { shouldDisable, shouldPrintDebug } = getPragmaOptions({\n source: firstCommentIndex >= 0 ? code.slice(firstCommentIndex) : '',\n path: validId,\n })\n\n if (shouldDisable) {\n return\n }\n\n const extracted = await extractToClassNames({\n extractor: extractor!,\n source: code,\n sourcePath: validId,\n options,\n shouldPrintDebug,\n })\n\n if (!extracted) {\n return\n }\n\n const rootRelativeId = `${validId}${virtualExt}`\n const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n\n let source = extracted.js\n\n if (extracted.styles) {\n if (\n server &&\n cssMap.has(absoluteId) &&\n cssMap.get(absoluteId) !== extracted.styles\n ) {\n const { moduleGraph } = server\n const [module] = Array.from(moduleGraph.getModulesByFile(absoluteId) || [])\n\n if (module) {\n moduleGraph.invalidateModule(module)\n\n // Vite uses this timestamp to add `?t=` query string automatically for HMR.\n module.lastHMRTimestamp =\n (module as any).lastInvalidationTimestamp || Date.now()\n }\n\n server.ws.send({\n type: 'custom',\n event: styleUpdateEvent(absoluteId),\n data: extracted.styles,\n })\n }\n\n source = `${source}\\nimport \"${rootRelativeId}\";`\n cssMap.set(absoluteId, extracted.styles)\n }\n\n return {\n code: source.toString(),\n map: extracted.map,\n }\n\n // if (ssr && !process.env.VITE_RSC_BUILD) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== validId) {\n // this.addWatchFile(file)\n // }\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { normalizePath } from "vite";
|
|
3
|
+
const styleUpdateEvent = (fileId) => `tamagui-style-update:${fileId}`;
|
|
4
|
+
function tamaguiExtractPlugin(options) {
|
|
5
|
+
let config;
|
|
6
|
+
let server;
|
|
7
|
+
const cssMap = /* @__PURE__ */ new Map();
|
|
8
|
+
let virtualExt;
|
|
9
|
+
let packageName;
|
|
10
|
+
const getAbsoluteVirtualFileId = (source) => normalizePath(path.join(config.root, source));
|
|
11
|
+
return {
|
|
12
|
+
name: "tamagui-extract",
|
|
13
|
+
enforce: "pre",
|
|
14
|
+
configureServer(_server) {
|
|
15
|
+
server = _server;
|
|
16
|
+
},
|
|
17
|
+
config(_userConfig, env) {
|
|
18
|
+
},
|
|
19
|
+
async configResolved(resolvedConfig) {
|
|
20
|
+
},
|
|
21
|
+
resolveId(source) {
|
|
22
|
+
},
|
|
23
|
+
load(id) {
|
|
24
|
+
},
|
|
25
|
+
async transform(code, id, ssrParam) {
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
tamaguiExtractPlugin
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=extractPlugin.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/extractPlugin.ts"],
|
|
4
|
+
"sourcesContent": ["// fork from https://github.com/seek-oss/vanilla-extract/blob/master/packages/vite-plugin/src/index.ts\n\nimport path from 'path'\n\nimport type { TamaguiOptions } from '@tamagui/static'\nimport outdent from 'outdent'\nimport type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'\nimport { normalizePath } from 'vite'\n\nconst styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`\n\nexport function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {\n let config: ResolvedConfig\n let server: ViteDevServer\n const cssMap = new Map<string, string>()\n let virtualExt: string\n let packageName: string\n\n const getAbsoluteVirtualFileId = (source: string) => normalizePath(path.join(config.root, source))\n\n return {\n name: 'tamagui-extract',\n enforce: 'pre',\n\n configureServer(_server) {\n server = _server\n },\n\n config(_userConfig, env) {\n // const include = env.command === 'serve' ? ['@tamagui/css/injectStyles'] : []\n // return {\n // optimizeDeps: { include },\n // ssr: {\n // external: ['@tamagui/css', '@tamagui/css/fileScope', '@tamagui/css/adapter'],\n // },\n // }\n },\n\n async configResolved(resolvedConfig) {\n // config = resolvedConfig\n // packageName = getPackageInfo(config.root).name\n // if (config.command === 'serve') {\n // postCssConfig = await resolvePostcssConfig(config)\n // }\n // virtualExt = `.vanilla.${config.command === 'serve' ? 'js' : 'css'}`\n },\n\n resolveId(source) {\n // if (!source.endsWith(virtualExt)) {\n // return\n // }\n // // Absolute paths seem to occur often in monorepos, where files are\n // // imported from outside the config root.\n // const absoluteId = source.startsWith(config.root) ? source : getAbsoluteVirtualFileId(source)\n // // There should always be an entry in the `cssMap` here.\n // // The only valid scenario for a missing one is if someone had written\n // // a file in their app using the .vanilla.js/.vanilla.css extension\n // if (cssMap.has(absoluteId)) {\n // return absoluteId\n // }\n },\n\n load(id) {\n // if (!cssMap.has(id)) {\n // return\n // }\n // const css = cssMap.get(id)\n // if (typeof css !== 'string') {\n // return\n // }\n // if (!server || server.config.isProduction) {\n // return css\n // }\n // return outdent`\n // import { injectStyles } from '@tamagui/css/injectStyles';\n // const inject = (css) => injectStyles({\n // fileScope: ${JSON.stringify({ filePath: id })},\n // css\n // });\n // inject(${JSON.stringify(css)});\n // import.meta.hot.on('${styleUpdateEvent(id)}', (css) => {\n // inject(css);\n // });\n // `\n },\n\n async transform(code, id, ssrParam) {\n // if (!cssFileFilter.test(id)) {\n // return null\n // }\n // let ssr: boolean | undefined\n // if (typeof ssrParam === 'boolean') {\n // ssr = ssrParam\n // } else {\n // ssr = ssrParam?.ssr\n // }\n // const index = id.indexOf('?')\n // const validId = index === -1 ? id : id.substring(0, index)\n // if (ssr) {\n // return addFileScope({\n // source: code,\n // filePath: normalizePath(validId),\n // rootPath: config.root,\n // packageName,\n // })\n // }\n // const { source, watchFiles } = await compile({\n // filePath: validId,\n // cwd: config.root,\n // esbuildOptions,\n // })\n // for (const file of watchFiles) {\n // // In start mode, we need to prevent the file from rewatching itself.\n // // If it's a `build --watch`, it needs to watch everything.\n // if (config.command === 'build' || file !== id) {\n // this.addWatchFile(file)\n // }\n // }\n // const output = await processVanillaFile({\n // source,\n // filePath: validId,\n // identOption: identifiers ?? (config.mode === 'production' ? 'short' : 'debug'),\n // serializeVirtualCssPath: async ({ fileScope, source }) => {\n // const rootRelativeId = `${fileScope.filePath}${virtualExt}`\n // const absoluteId = getAbsoluteVirtualFileId(rootRelativeId)\n // let cssSource = source\n // if (postCssConfig) {\n // const postCssResult = await (await import('postcss'))\n // .default(postCssConfig.plugins)\n // .process(source, {\n // ...postCssConfig.options,\n // from: undefined,\n // map: false,\n // })\n // cssSource = postCssResult.css\n // }\n // if (server && cssMap.has(absoluteId) && cssMap.get(absoluteId) !== source) {\n // const { moduleGraph } = server\n // const module = moduleGraph.getModuleById(absoluteId)\n // if (module) {\n // moduleGraph.invalidateModule(module)\n // }\n // server.ws.send({\n // type: 'custom',\n // event: styleUpdateEvent(absoluteId),\n // data: cssSource,\n // })\n // }\n // cssMap.set(absoluteId, cssSource)\n // // We use the root relative id here to ensure file contents (content-hashes)\n // // are consistent across build machines\n // return `import \"${rootRelativeId}\";`\n // },\n // })\n // return {\n // code: output,\n // map: { mappings: '' },\n // }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEA;AAKA;AAEA,MAAM,mBAAmB,CAAC,WAAmB,wBAAwB;AAE9D,8BAA8B,SAAiC;AACpE,MAAI;AACJ,MAAI;AACJ,QAAM,SAAS,oBAAI,IAAoB;AACvC,MAAI;AACJ,MAAI;AAEJ,QAAM,2BAA2B,CAAC,WAAmB,cAAc,KAAK,KAAK,OAAO,MAAM,MAAM,CAAC;AAEjG,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,gBAAgB,SAAS;AACvB,eAAS;AAAA,IACX;AAAA,IAEA,OAAO,aAAa,KAAK;AAAA,IAQzB;AAAA,IAEA,MAAM,eAAe,gBAAgB;AAAA,IAOrC;AAAA,IAEA,UAAU,QAAQ;AAAA,IAalB;AAAA,IAEA,KAAK,IAAI;AAAA,IAsBT;AAAA,IAEA,MAAM,UAAU,MAAM,IAAI,UAAU;AAAA,IAwEpC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/jsx/index.js
CHANGED
package/dist/jsx/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './plugin
|
|
5
|
-
"mappings": "AAAA
|
|
4
|
+
"sourcesContent": ["export * from './plugin'\n"],
|
|
5
|
+
"mappings": "AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/plugin.js
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
|
+
import envPlugin from "vite-plugin-environment";
|
|
2
|
+
import { tamaguiExtractPlugin } from "./extractPlugin";
|
|
1
3
|
function tamaguiPlugin(options) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
`${components.join("|")}|react-native|expo-linear-gradient`,
|
|
5
|
-
"ig"
|
|
6
|
-
);
|
|
7
|
-
const plugin = {
|
|
8
|
-
name: "tamagui-base",
|
|
4
|
+
return {
|
|
5
|
+
name: "tamagui",
|
|
9
6
|
enforce: "pre",
|
|
10
7
|
config(userConfig, env) {
|
|
11
8
|
return {
|
|
12
|
-
plugins: [
|
|
9
|
+
plugins: [
|
|
10
|
+
envPlugin(["NODE_ENV", "TAMAGUI_TARGET"]),
|
|
11
|
+
...options.disable || options.disableDebugAttr && options.disableExtraction ? [] : [tamaguiExtractPlugin(options)]
|
|
12
|
+
],
|
|
13
|
+
esbuild: {
|
|
14
|
+
loader: "tsx"
|
|
15
|
+
},
|
|
13
16
|
define: {
|
|
14
17
|
"global.__x": {},
|
|
15
18
|
_frameTimestamp: void 0,
|
|
16
19
|
_WORKLET: false,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"process.env.IS_STATIC": JSON.stringify(false)
|
|
20
|
+
process: {
|
|
21
|
+
env: {
|
|
22
|
+
TAMAGUI_TARGET: process.env.TAMAGUI_TARGET || "web",
|
|
23
|
+
NODE_ENV: process.env.NODE_ENV || env.mode
|
|
24
|
+
}
|
|
23
25
|
}
|
|
24
26
|
},
|
|
25
|
-
ssr: {
|
|
26
|
-
noExternal: noExternalSSR
|
|
27
|
-
},
|
|
28
27
|
optimizeDeps: {
|
|
29
|
-
include: ["styleq", "copy-to-clipboard", "react-native-reanimated"],
|
|
30
28
|
esbuildOptions: {
|
|
31
|
-
jsx: "transform",
|
|
32
29
|
resolveExtensions: [
|
|
33
30
|
".web.js",
|
|
34
31
|
".web.ts",
|
|
@@ -60,18 +57,12 @@ function tamaguiPlugin(options) {
|
|
|
60
57
|
alias: {
|
|
61
58
|
"react-native/Libraries/Renderer/shims/ReactFabric": "@tamagui/proxy-worm",
|
|
62
59
|
"react-native/Libraries/Utilities/codegenNativeComponent": "@tamagui/proxy-worm",
|
|
63
|
-
"react-native
|
|
64
|
-
"react-native": "react-native-web",
|
|
65
|
-
...options.useReactNativeWebLite && {
|
|
66
|
-
"react-native": "react-native-web-lite",
|
|
67
|
-
"react-native-web": "react-native-web-lite"
|
|
68
|
-
}
|
|
60
|
+
"react-native": "react-native-web"
|
|
69
61
|
}
|
|
70
62
|
}
|
|
71
63
|
};
|
|
72
64
|
}
|
|
73
65
|
};
|
|
74
|
-
return plugin;
|
|
75
66
|
}
|
|
76
67
|
export {
|
|
77
68
|
tamaguiPlugin
|
package/dist/jsx/plugin.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/plugin.ts"],
|
|
4
|
-
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\nimport envPlugin from 'vite-plugin-environment'\n\nimport { tamaguiExtractPlugin } from './extractPlugin'\n\nexport function tamaguiPlugin(options: TamaguiOptions): Plugin {\n return {\n name: 'tamagui',\n enforce: 'pre',\n\n config(userConfig, env) {\n return {\n plugins: [\n envPlugin(['NODE_ENV', 'TAMAGUI_TARGET']),\n ...(options.disable || (options.disableDebugAttr && options.disableExtraction)\n ? []\n : [tamaguiExtractPlugin(options)]),\n ],\n esbuild: {\n loader: 'tsx',\n },\n define: {\n // reanimated support\n 'global.__x': {},\n _frameTimestamp: undefined,\n _WORKLET: false,\n process: {\n env: {\n TAMAGUI_TARGET: process.env.TAMAGUI_TARGET || 'web',\n NODE_ENV: process.env.NODE_ENV || env.mode,\n },\n },\n },\n optimizeDeps: {\n esbuildOptions: {\n resolveExtensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n loader: {\n '.js': 'jsx',\n },\n },\n },\n resolve: {\n // for once it extracts\n // mainFields: ['module:jsx', 'module', 'jsnext:main', 'jsnext'],\n extensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n alias: {\n 'react-native/Libraries/Renderer/shims/ReactFabric': '@tamagui/proxy-worm',\n 'react-native/Libraries/Utilities/codegenNativeComponent': '@tamagui/proxy-worm',\n 'react-native': 'react-native-web',\n },\n },\n }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEA;AAEA;AAEO,uBAAuB,SAAiC;AAC7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,OAAO,YAAY,KAAK;AACtB,aAAO;AAAA,QACL,SAAS;AAAA,UACP,UAAU,CAAC,YAAY,gBAAgB,CAAC;AAAA,UACxC,GAAI,QAAQ,WAAY,QAAQ,oBAAoB,QAAQ,oBACxD,CAAC,IACD,CAAC,qBAAqB,OAAO,CAAC;AAAA,QACpC;AAAA,QACA,SAAS;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,UAEN,cAAc,CAAC;AAAA,UACf,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,SAAS;AAAA,YACP,KAAK;AAAA,cACH,gBAAgB,QAAQ,IAAI,kBAAkB;AAAA,cAC9C,UAAU,QAAQ,IAAI,YAAY,IAAI;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAAA,QACA,cAAc;AAAA,UACZ,gBAAgB;AAAA,YACd,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UAGP,YAAY;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,qDAAqD;AAAA,YACrD,2DAA2D;AAAA,YAC3D,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/vite-plugin",
|
|
3
|
-
"version": "1.0.1-rc.
|
|
3
|
+
"version": "1.0.1-rc.10",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -18,16 +18,16 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@originjs/vite-plugin-commonjs": "^1.0.3",
|
|
21
|
-
"@tamagui/fake-react-native": "^1.0.1-rc.
|
|
22
|
-
"@tamagui/proxy-worm": "^1.0.1-rc.
|
|
23
|
-
"@tamagui/react-native-svg": "^1.0.1-rc.
|
|
24
|
-
"@tamagui/static": "^1.0.1-rc.
|
|
21
|
+
"@tamagui/fake-react-native": "^1.0.1-rc.10",
|
|
22
|
+
"@tamagui/proxy-worm": "^1.0.1-rc.10",
|
|
23
|
+
"@tamagui/react-native-svg": "^1.0.1-rc.10",
|
|
24
|
+
"@tamagui/static": "^1.0.1-rc.10",
|
|
25
25
|
"fs-extra": "^10.1.0",
|
|
26
26
|
"lodash": "^4.17.21",
|
|
27
27
|
"outdent": "^0.8.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@tamagui/build": "^1.0.1-rc.
|
|
30
|
+
"@tamagui/build": "^1.0.1-rc.10",
|
|
31
31
|
"vite-plugin-environment": "^1.1.3"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
package/src/extract.ts
CHANGED
|
@@ -16,7 +16,8 @@ const styleUpdateEvent = (fileId: string) => `tamagui-style-update:${fileId}`
|
|
|
16
16
|
const GLOBAL_CSS_VIRTUAL_PATH = '__tamagui_global_css__.css'
|
|
17
17
|
|
|
18
18
|
export function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {
|
|
19
|
-
const disableStatic =
|
|
19
|
+
const disableStatic =
|
|
20
|
+
options.disable || (options.disableDebugAttr && options.disableExtraction)
|
|
20
21
|
|
|
21
22
|
if (disableStatic) {
|
|
22
23
|
return {
|
|
@@ -94,7 +95,9 @@ export function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {
|
|
|
94
95
|
|
|
95
96
|
// Absolute paths seem to occur often in monorepos, where files are
|
|
96
97
|
// imported from outside the config root.
|
|
97
|
-
const absoluteId = source.startsWith(config.root)
|
|
98
|
+
const absoluteId = source.startsWith(config.root)
|
|
99
|
+
? source
|
|
100
|
+
: getAbsoluteVirtualFileId(validId)
|
|
98
101
|
|
|
99
102
|
// There should always be an entry in the `cssMap` here.
|
|
100
103
|
// The only valid scenario for a missing one is if someone had written
|
|
@@ -194,7 +197,11 @@ export function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {
|
|
|
194
197
|
let source = extracted.js
|
|
195
198
|
|
|
196
199
|
if (extracted.styles) {
|
|
197
|
-
if (
|
|
200
|
+
if (
|
|
201
|
+
server &&
|
|
202
|
+
cssMap.has(absoluteId) &&
|
|
203
|
+
cssMap.get(absoluteId) !== extracted.styles
|
|
204
|
+
) {
|
|
198
205
|
const { moduleGraph } = server
|
|
199
206
|
const [module] = Array.from(moduleGraph.getModulesByFile(absoluteId) || [])
|
|
200
207
|
|
|
@@ -202,7 +209,8 @@ export function tamaguiExtractPlugin(options: TamaguiOptions): Plugin {
|
|
|
202
209
|
moduleGraph.invalidateModule(module)
|
|
203
210
|
|
|
204
211
|
// Vite uses this timestamp to add `?t=` query string automatically for HMR.
|
|
205
|
-
module.lastHMRTimestamp =
|
|
212
|
+
module.lastHMRTimestamp =
|
|
213
|
+
(module as any).lastInvalidationTimestamp || Date.now()
|
|
206
214
|
}
|
|
207
215
|
|
|
208
216
|
server.ws.send({
|
package/src/plugin.ts
CHANGED
|
@@ -8,12 +8,14 @@ import type { Plugin } from 'vite'
|
|
|
8
8
|
export function tamaguiPlugin(
|
|
9
9
|
options: TamaguiOptions & {
|
|
10
10
|
useReactNativeWebLite?: boolean
|
|
11
|
-
}
|
|
11
|
+
},
|
|
12
12
|
): Plugin {
|
|
13
|
-
const components = [
|
|
13
|
+
const components = [
|
|
14
|
+
...new Set([...options.components, 'tamagui', '@tamagui/core']),
|
|
15
|
+
]
|
|
14
16
|
const noExternalSSR = new RegExp(
|
|
15
17
|
`${components.join('|')}|react-native|expo-linear-gradient`,
|
|
16
|
-
'ig'
|
|
18
|
+
'ig',
|
|
17
19
|
)
|
|
18
20
|
|
|
19
21
|
const plugin: Plugin = {
|
|
@@ -33,10 +35,14 @@ export function tamaguiPlugin(
|
|
|
33
35
|
_frameTimestamp: undefined,
|
|
34
36
|
_WORKLET: false,
|
|
35
37
|
...(process.env.NODE_ENV !== 'test' && {
|
|
36
|
-
'process.env.TAMAGUI_TARGET': JSON.stringify(
|
|
38
|
+
'process.env.TAMAGUI_TARGET': JSON.stringify(
|
|
39
|
+
process.env.TAMAGUI_TARGET || 'web',
|
|
40
|
+
),
|
|
37
41
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode),
|
|
38
42
|
'process.env.ENABLE_RSC': JSON.stringify(process.env.ENABLE_RSC || ''),
|
|
39
|
-
'process.env.ENABLE_STEPS': JSON.stringify(
|
|
43
|
+
'process.env.ENABLE_STEPS': JSON.stringify(
|
|
44
|
+
process.env.ENABLE_STEPS || '',
|
|
45
|
+
),
|
|
40
46
|
'process.env.IS_STATIC': JSON.stringify(false),
|
|
41
47
|
}),
|
|
42
48
|
},
|
|
@@ -92,8 +98,10 @@ export function tamaguiPlugin(
|
|
|
92
98
|
'.mjs',
|
|
93
99
|
],
|
|
94
100
|
alias: {
|
|
95
|
-
'react-native/Libraries/Renderer/shims/ReactFabric':
|
|
96
|
-
|
|
101
|
+
'react-native/Libraries/Renderer/shims/ReactFabric':
|
|
102
|
+
'@tamagui/proxy-worm',
|
|
103
|
+
'react-native/Libraries/Utilities/codegenNativeComponent':
|
|
104
|
+
'@tamagui/proxy-worm',
|
|
97
105
|
'react-native-svg': '@tamagui/react-native-svg',
|
|
98
106
|
'react-native': 'react-native-web',
|
|
99
107
|
...(options.useReactNativeWebLite && {
|