#Next.js
Ammolite can be used with Next.js as a plugin.
Currently support both Webpack and Turbopack implementation.
#Installation
Install these packages as dev dependencies in the project:
npm
yarn
pnpm
bun
npm i -D @ammolite/next @ammolite/postcssyarn add -D @ammolite/next @ammolite/postcsspnpm add -D @ammolite/next @ammolite/postcssbun add -D @ammolite/next @ammolite/postcss#Configuration
Add the following Next.js configuration:
JavaScript(CJS)
JavaScript(ESM)
TypeScript
next.config.js
const { ammolite } = require("@ammolite/next/webpack");
/* @type {import("next").NextConfig} */
let config: NextConfig = {
/* ... */
};
const withAmmolite = ammolite();
config = withAmmolite(config);
module.exports = config;next.config.mjs
import { ammolite } from "@ammolite/next/webpack";
/* @type {import("next").NextConfig} */
let config: NextConfig = {
/* ... */
};
const withAmmolite = ammolite();
config = withAmmolite(config);
export default config;next.config.ts
import type { NextConfig } from "next";
import { ammolite } from "@ammolite/next/turbopack";
type Plugin = (config?: NextConfig) => NextConfig;
let config: NextConfig = {
/* ... */
};
const withAmmolite: Plugin = ammolite();
config = withAmmolite(config);
export default config;And add the following PostCSS configuration:
CommonJS
ESModule
postcss.config.js
/** @type {import("@ammolite/postcss").PluginOptions} */
const ammoliteOptions = {};
/** @type {import("postcss-load-config").Config} */
module.exports = {
plugins: [
[
"@ammolite/postcss",
ammoliteOptions,
],
],
};postcss.config.mjs
/** @type {import("@ammolite/postcss").PluginOptions} */
const ammoliteOptions = {};
/** @type {import("postcss-load-config").Config} */
export default {
plugins: [
[
"@ammolite/postcss",
ammoliteOptions,
],
],
};Or follow Next.js configuration:
npm
yarn
pnpm
bun
npm i -D postcss-preset-env postcss-flexbugs-fixesyarn add -D postcss-preset-env postcss-flexbugs-fixespnpm add -D postcss-preset-env postcss-flexbugs-fixesbun add -D postcss-preset-env postcss-flexbugs-fixesCommonJS
ESModule
postcss.config.js
/** @type {import("postcss-preset-env").pluginOptions} */
const presetEnvOptions = {
autoprefixer: {
flexbox: "no-2009",
},
stage: 3,
features: {
"custom-properties": false,
}
};
/** @type {import("@ammolite/postcss").PluginOptions} */
const ammoliteOptions = {};
/** @type {import("postcss-load-config").Config} */
module.exports = {
plugins: [
[
"postcss-preset-env",
presetEnvOptions,
],
"postcss-flexbugs-fixes",
[
"@ammolite/postcss",
ammoliteOptions,
],
],
};postcss.config.mjs
/** @type {import("postcss-preset-env").pluginOptions} */
const presetEnvOptions = {
autoprefixer: {
flexbox: "no-2009",
},
stage: 3,
features: {
"custom-properties": false,
}
};
/** @type {import("@ammolite/postcss").PluginOptions} */
const ammoliteOptions = {};
/** @type {import("postcss-load-config").Config} */
export default {
plugins: [
[
"postcss-preset-env",
presetEnvOptions,
],
"postcss-flexbugs-fixes",
[
"@ammolite/postcss",
ammoliteOptions,
],
],
};In case there are no any CSS file, create one and import it:
JavaScript
TypeScript
src/app/layout.jsx
import "index.css";
export default () => {
// ...
}src/app/layout.tsx
import type * as React from "react";
import "index.css";
export default (): React.JSX.Element => {
// ...
}