diff --git a/packages/next/src/generators/application/lib/create-application-files.ts b/packages/next/src/generators/application/lib/create-application-files.ts index d70728da10ce52..ae9fe71e7e1410 100644 --- a/packages/next/src/generators/application/lib/create-application-files.ts +++ b/packages/next/src/generators/application/lib/create-application-files.ts @@ -63,6 +63,10 @@ export function createApplicationFiles(host: Tree, options: NormalizedSchema) { let { extends: _, ...updatedJson } = json; + // Don't generate the `paths` object or else workspace libs will not work later. + // It'll be generated as needed when a lib is first added. + delete json.compilerOptions.paths; + updatedJson = { ...updateJson, compilerOptions: { diff --git a/packages/next/src/generators/library/library.spec.ts b/packages/next/src/generators/library/library.spec.ts index 5417ebf7642fcf..e74c0b9d3d22b2 100644 --- a/packages/next/src/generators/library/library.spec.ts +++ b/packages/next/src/generators/library/library.spec.ts @@ -152,14 +152,14 @@ describe('next library', () => { expect(appTree.read('my-lib/src/index.ts', 'utf-8')).toContain( 'React client components' ); - expect(appTree.read('my-lib/src/server.ts', 'utf-8')).toContain( + expect(appTree.read('my-lib/src/server.tsx', 'utf-8')).toContain( 'React server components' ); expect( readJson(appTree, 'tsconfig.base.json').compilerOptions.paths ).toMatchObject({ '@proj/my-lib': ['my-lib/src/index.ts'], - '@proj/my-lib/server': ['my-lib/src/server.ts'], + '@proj/my-lib/server': ['my-lib/src/server.tsx'], }); }); }); diff --git a/packages/next/src/generators/library/library.ts b/packages/next/src/generators/library/library.ts index c548ee0d9f705e..f616600ca72566 100644 --- a/packages/next/src/generators/library/library.ts +++ b/packages/next/src/generators/library/library.ts @@ -46,15 +46,20 @@ export async function libraryGenerator(host: Tree, rawOptions: Schema) { const serverEntryPath = joinPathFragments( options.projectRoot, './src', - 'server.' + (options.js ? 'js' : 'ts') + 'server.' + (options.js ? 'js' : 'tsx') ); host.write( joinPathFragments( options.projectRoot, 'src', - `server.${options.js ? 'js' : 'ts'}` + `server.${options.js ? 'js' : 'tsx'}` ), - `// Use this file to export React server components\n` + `// Use this file to export React server components +export async function MyServerComponent() { + // Server components can perform async operations + // e.g const response = await fetch('...'); + return