This package contains tools for converting NextJs project to monorepository
nextjs-monorepo-tools is package that let you convert your nextjs project to monorepo. Follow the example below to know how you can do it.
Please check out the example project here – nextjs-monorepo-example
.
|-- apps
|-- project-one
|-- pages
|-- next.config.js
|-- tsconfig.json
|-- project-two
|-- pages
|-- next.config.js
|-- tsconfig.json
|-- libs
|-- common-component
|-- common-component.tsx
|-- package.json
|-- tsconfig.json
tsconfig.json
and then add follow params:{
"compilerOptions": {
// ...
"baseUrl": ".",
"paths": {
"@common/common-component": ["libs/common-component"]
}
}
}
next.config.js
:const { patchWebpackConfig } = require("nextjs-monorepo-tools");
const config = {
webpack: patchWebpackConfig({
commonDirs: ["libs"], // "libs" is directory for shared modules
}),
};
module.exports = config;
That should be done for every project in your monorepo.
Because how we have two projects we have to update package.json
to have dev
, build
, start
commands for each project.
"scripts": {
"dev:project-one": "next dev apps/project-one",
"dev:project-two": "next dev apps/project-two",
"build:project-one": "next build apps/project-one",
"build:project-two": "next build apps/project-two",
"start:project-one": "next start apps/project-one",
"start:project-two": "next start apps/project-two"
}
That's all!
Just create new directory in libs
and add new section in tsconfig.json
.
{
"compilerOptions": {
// ...
"paths": {
"@common/common-component": ["libs/common-component"],
"@common/common-component-two": ["libs/common-component-two"]
}
}
}