{"_id":"@arsinclair/next-with-linaria","_rev":"2-d94f59a391ae37d3329e38749d627d78","name":"@arsinclair/next-with-linaria","dist-tags":{"latest":"2.0.1"},"versions":{"2.0.0":{"name":"@arsinclair/next-with-linaria","version":"2.0.0","keywords":["linaria","next","next.js","css","rspack","turbopack","webpack"],"author":{"name":"Dario Lehmhus"},"license":"MIT","_id":"@arsinclair/next-with-linaria@2.0.0","maintainers":[{"name":"arsinclair","email":"arsinclair@protonmail.com"}],"homepage":"https://github.com/arsinclair/next-with-linaria#readme","bugs":{"url":"https://github.com/arsinclair/next-with-linaria/issues"},"dist":{"shasum":"983519823d010e21f96a7608207e952696f90fed","tarball":"https://registry.npmjs.org/@arsinclair/next-with-linaria/-/next-with-linaria-2.0.0.tgz","fileCount":10,"integrity":"sha512-c9An+EeydVaURbXrcfOo9PZcCcM+2MN086XUnpqqJOpd3BIWxCfkNrBUr84KxGV5IBqiNaNJqwJUjxeHA29Qng==","signatures":[{"sig":"MEUCIQDuNz5fhWrPr6EUCIztMjG4uCHWkx4SKEids0bc10Y6twIgLIfkMMNGZqBL5XGsxQOpSSztZiPNxY+rSMnke+WXXeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17778},"main":"lib/with-linaria.js","type":"module","types":"lib/with-linaria.d.ts","engines":{"node":">=22.12"},"exports":{".":{"types":"./lib/with-linaria.d.ts","default":"./lib/with-linaria.js"}},"gitHead":"c91d9b48443e67cef09644123f9da5e81f923ff3","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"pnpm run test:unit && pnpm --dir tests/example run test","build":"tsc","clean":"rm -rf lib","watch":"tsc -w","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:unit":"node --test tests/config.test.mjs","prepublish":"pnpm run clean && pnpm run build"},"_npmUser":{"name":"arsinclair","email":"arsinclair@protonmail.com"},"repository":{"url":"git+https://github.com/arsinclair/next-with-linaria.git","type":"git"},"_npmVersion":"11.12.1","description":"Linaria support for Next.js App Router","directories":{},"lint-staged":{"**/*.(js|jsx|ts|tsx)":["oxlint --fix"],"**/*.(js|jsx|ts|tsx|json|css|md|mdx)":["oxfmt"]},"_nodeVersion":"24.19.0","dependencies":{"@wyw-in-js/nextjs":"2.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"next":"16.3.1","is-ci":"4.1.0","oxfmt":"0.44.0","react":"19.2.4","oxlint":"1.59.0","globals":"17.4.0","webpack":"5.105.4","react-dom":"19.2.4","typescript":"6.0.2","lint-staged":"16.4.0","@rspack/core":"1.7.11","@linaria/core":"8.2.0","@linaria/react":"8.2.0","@types/fs-extra":"11.0.4","simple-git-hooks":"2.13.1","@wyw-in-js/babel-preset":"2.4.2","@wyw-in-js/webpack-loader":"2.4.2","@wyw-in-js/turbopack-loader":"2.4.2"},"peerDependencies":{"next":"16.3.x","react":"19.2.x","react-dom":"19.2.x","@linaria/core":"8.x","@linaria/react":"8.x","@wyw-in-js/babel-preset":"2.x"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"@linaria/core":{"optional":true},"@linaria/react":{"optional":true},"@wyw-in-js/babel-preset":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/next-with-linaria_2.0.0_1787377449648_0.8338856957838843","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@arsinclair/next-with-linaria","version":"2.0.1","description":"Linaria support for Next.js App Router","main":"lib/with-linaria.js","types":"lib/with-linaria.d.ts","type":"module","exports":{".":{"types":"./lib/with-linaria.d.ts","default":"./lib/with-linaria.js"}},"dependencies":{"@wyw-in-js/nextjs":"2.4.2"},"devDependencies":{"@linaria/core":"8.2.0","@linaria/react":"8.2.0","@rspack/core":"1.7.11","@types/fs-extra":"11.0.4","@wyw-in-js/babel-preset":"2.4.2","@wyw-in-js/turbopack-loader":"2.4.2","@wyw-in-js/webpack-loader":"2.4.2","globals":"17.4.0","is-ci":"4.1.0","lint-staged":"16.4.0","next":"16.3.1","oxfmt":"0.44.0","oxlint":"1.59.0","simple-git-hooks":"2.13.1","react":"19.2.4","react-dom":"19.2.4","typescript":"6.0.2","webpack":"5.105.4"},"peerDependencies":{"@linaria/core":"8.x","@linaria/react":"8.x","@wyw-in-js/babel-preset":"2.x","next":"16.3.x","react":"19.2.x","react-dom":"19.2.x"},"peerDependenciesMeta":{"@linaria/core":{"optional":true},"@linaria/react":{"optional":true},"@wyw-in-js/babel-preset":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"engines":{"node":">=22.12"},"publishConfig":{"access":"public"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"lint-staged":{"**/*.(js|jsx|ts|tsx)":["oxlint --fix"],"**/*.(js|jsx|ts|tsx|json|css|md|mdx)":["oxfmt"]},"author":{"name":"Dario Lehmhus"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/arsinclair/next-with-linaria.git"},"bugs":{"url":"https://github.com/arsinclair/next-with-linaria/issues"},"homepage":"https://github.com/arsinclair/next-with-linaria#readme","keywords":["linaria","next","next.js","css","rspack","turbopack","webpack"],"scripts":{"build":"tsc","watch":"tsc -w","clean":"rm -rf lib","lint":"oxlint","lint:fix":"oxlint --fix","fmt":"oxfmt","fmt:check":"oxfmt --check","test":"pnpm run test:unit && pnpm --dir tests/example run test","test:unit":"node --test tests/config.test.mjs","prepublish":"pnpm run clean && pnpm run build"},"_id":"@arsinclair/next-with-linaria@2.0.1","_integrity":"sha512-Sw7GXPs+FpcVPXIrgjC+/wBuSnHt5UAGL9aAG8zpF0YkxfiiCOTH8vzchrEgnOhcq8dNg1Cefd5HOKMChCtT8w==","_resolved":"/tmp/d302a5f7e4a5cd4371b999b74e796bbd/arsinclair-next-with-linaria-2.0.1.tgz","_from":"file:arsinclair-next-with-linaria-2.0.1.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Sw7GXPs+FpcVPXIrgjC+/wBuSnHt5UAGL9aAG8zpF0YkxfiiCOTH8vzchrEgnOhcq8dNg1Cefd5HOKMChCtT8w==","shasum":"548778aaffae06f6a2fb220658b0c78ef5ce7265","tarball":"https://registry.npmjs.org/@arsinclair/next-with-linaria/-/next-with-linaria-2.0.1.tgz","fileCount":10,"unpackedSize":17741,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICCoNEk5vs2Xf+MaCwDVja120vTpmY+/sL3aq1kjSSffAiAeR/XL8cSJ8RAL2xzah6Je5ZSwVK+VKkCPqBxIbRv2Uw=="}]},"_npmUser":{"name":"arsinclair","email":"arsinclair@protonmail.com"},"directories":{},"maintainers":[{"name":"arsinclair","email":"arsinclair@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next-with-linaria_2.0.1_1787377599034_0.018522233522510145"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-22T05:44:09.523Z","modified":"2026-08-22T05:46:39.339Z","2.0.0":"2026-08-22T05:44:09.778Z","2.0.1":"2026-08-22T05:46:39.175Z"},"bugs":{"url":"https://github.com/arsinclair/next-with-linaria/issues"},"author":{"name":"Dario Lehmhus"},"license":"MIT","homepage":"https://github.com/arsinclair/next-with-linaria#readme","keywords":["linaria","next","next.js","css","rspack","turbopack","webpack"],"repository":{"type":"git","url":"git+https://github.com/arsinclair/next-with-linaria.git"},"description":"Linaria support for Next.js App Router","maintainers":[{"name":"arsinclair","email":"arsinclair@protonmail.com"}],"readme":"# Next.js + Linaria\n\n`@arsinclair/next-with-linaria` integrates Linaria with Next.js while preserving the small\n`withLinaria(config)` API. Version 2 delegates extraction to the official WyW 2\nNext.js, Turbopack, and Webpack integrations.\n\n## Supported versions\n\n| Component                               | Supported version                           |\n| --------------------------------------- | ------------------------------------------- |\n| Node.js                                 | `>=22.12`                                   |\n| Next.js                                 | `16.3.x`                                    |\n| React / React DOM                       | `19.2.x`                                    |\n| Linaria                                 | `8.x`                                       |\n| WyW-in-JS                               | `2.x`                                       |\n| Package manager used by this repository | pnpm 10                                     |\n| Routers                                 | App Router and Pages Router                 |\n| Bundlers                                | Turbopack, Webpack, and experimental Rspack |\n\nSee [Rspack](#rspack) for its experimental limitation.\n\n## Installation\n\n```sh\npnpm add @arsinclair/next-with-linaria @linaria/core @linaria/react\n```\n\nThe integration uses `@wyw-in-js/nextjs` and its official loaders. You do not\nneed to configure `@wyw-in-js/babel-preset`; avoid applying the preset in\naddition to the loaders because that double-processes source files.\n\nWyW 2 and this package are ESM-only. Use an ESM or TypeScript Next config.\n\n## Usage\n\n```ts\n// next.config.ts\nimport withLinaria, { type LinariaConfig } from '@arsinclair/next-with-linaria';\n\nconst config = {\n  transpilePackages: ['my-workspace-package'],\n  linaria: {\n    displayName: process.env.NODE_ENV !== 'production',\n    prefixer: true,\n  },\n  webpack(config) {\n    // Existing callbacks are preserved.\n    return config;\n  },\n} satisfies LinariaConfig;\n\nexport default withLinaria(config);\n```\n\nTop-level `linaria` options are forwarded to both official loaders where they\nare compatible. Use the explicit escape hatches when the bundlers need\ndifferent values:\n\n```ts\nconst config = {\n  linaria: {\n    webpackLoaderOptions: {\n      // Webpack-only options may include functions or RegExp values.\n    },\n    turbopackLoaderOptions: {\n      // Must contain plain JSON-serializable values.\n      configFile: './wyw-in-js.config.mjs',\n    },\n  },\n} satisfies LinariaConfig;\n```\n\nTurbopack loader options must be JSON-serializable. Put custom resolvers,\npreprocessors, regular expressions, and other function-valued configuration in\nan external `configFile`.\n\n## Global styles\n\nThe existing global-style filename convention remains supported:\n\n```tsx\n// styles/site.linaria.global.tsx\nimport { css } from '@linaria/core';\n\nexport const globals = css`\n  :global() {\n    body {\n      margin: 0;\n    }\n  }\n`;\n```\n\nImport the file from `app/layout.tsx` or `pages/_app.tsx`:\n\n```ts\nimport '../styles/site.linaria.global';\n```\n\nWyW 2 emits generated CSS as CSS Modules with Linaria selectors marked global,\nso the old custom gzip/base64 virtual CSS protocol is no longer used. Standard\nCSS Modules can coexist with generated Linaria CSS.\n\n## `fastCheck`\n\n`fastCheck` is accepted for source compatibility with version 1.x, but is now a\nno-op. The former regular-expression shortcut could miss valid styled code.\nWyW 2 therefore processes every matching source file and owns caching and\nincremental invalidation itself. Both `fastCheck: true` and `fastCheck: false`\nhave identical correctness behavior.\n\n## Middleware and proxy\n\nThe generated Turbopack rules exclude both `middleware.ts` and the Next 16\n`proxy.ts` convention. Consumers do not need to patch these conditions.\n\n## Migration from 1.4 / Linaria 7 / WyW 1\n\n1. Upgrade Node.js to 22.12 or newer.\n2. Upgrade `@linaria/core` and `@linaria/react` to 8.x.\n3. Remove WyW 1 packages and lockfile entries. If the Babel preset is needed by\n   another tool, upgrade it to 2.x; it is not needed by this integration.\n4. Use `import` from `next.config.ts` or `next.config.mjs`. CommonJS `require()`\n   is no longer supported because WyW 2 is ESM-only.\n5. Replace the removed top-level WyW `evaluate` option with\n   `eval.strategy: 'execute'` only when evaluator-only compatibility is needed;\n   otherwise keep WyW 2's default `hybrid` strategy.\n6. Move non-serializable Turbopack configuration into\n   `wyw-in-js.config.mjs` and pass its `configFile` path.\n7. If equal-specificity rules relied on generated source order, inspect the\n   extracted CSS because WyW 2 can emit equivalent rules in a different order.\n\nIntentional breaking changes are the Node 22.12 minimum, ESM-only entry point,\nWyW 2 option semantics, and removal of the unsafe `fastCheck` optimization.\n\nSee the official [Linaria 8 migration guide](https://github.com/callstack/linaria/blob/master/docs/MIGRATION_GUIDE.md),\n[WyW 2 migration guide](https://wyw-in-js.dev/migration/v2), and\n[Next.js integration documentation](https://wyw-in-js.dev/bundlers/nextjs).\n\n## Architecture\n\nThe official integration performs transforms, caching, resolver integration,\ndependency tracking, CSS emission, source maps, and HMR handling. This package\nonly adapts the legacy API and adds the `proxy.ts` exclusion. The complete\ndecision record is in [ARCHITECTURE.md](./ARCHITECTURE.md).\n\n## Rspack\n\nRspack is retained as experimental support. With `next-rspack` 16.3.1 and\n`@rspack/core` 1.7.11, the production and development suites pass extraction,\nSSR, routing, CSS Modules, workspace packages, and declaration add/change HMR.\nNext still labels `next-rspack` experimental, and a server-component style\nupdate can fall back to a full page refresh rather than Fast Refresh. Turbopack\nor Webpack remains the recommended production choice.\n","readmeFilename":"README.md"}