-
Notifications
You must be signed in to change notification settings - Fork 27.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix type plugin for NX workspaces (#47534)
The plugin was failing in NX monorepos due to a wrong import path. #44363, nrwl/nx#14558 ``` nx build my-next > nx run my-next:build:production warn - You have enabled experimental feature (appDir) in next.config.js. warn - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk. info - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback info - Creating an optimized production build info - Compiled successfully info - Skipping linting info - Checking validity of types ..Failed to compile. Type error: Cannot find module '../../../../app/layout' or its corresponding type declarations. —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— > NX Ran target build for project my-next (2s) ✖ 1/1 failed ``` --------- Co-authored-by: Ian Serpa <[email protected]> Co-authored-by: Shu Ding <[email protected]>
- Loading branch information
1 parent
9de5b7b
commit 3e25b06
Showing
2 changed files
with
94 additions
and
11 deletions.
There are no files selected for viewing
69 changes: 69 additions & 0 deletions
69
packages/next/src/build/webpack/plugins/next-types-plugin.test.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
import { NextTypesPlugin } from './next-types-plugin' | ||
|
||
describe('next-types-plugin', () => { | ||
it('should generate correct base import path', () => { | ||
const plugin = new NextTypesPlugin({ | ||
dir: '/Users/myself/myproject', | ||
distDir: '.next', | ||
appDir: '/Users/myself/myproject/app', | ||
dev: false, | ||
isEdgeServer: false, | ||
pageExtensions: ['tsx', 'ts', 'jsx', 'js'], | ||
typedRoutes: false, | ||
originalRewrites: undefined, | ||
originalRedirects: undefined, | ||
}) | ||
expect(plugin.getRelativePathFromAppTypesDir('page.tsx')).toEqual( | ||
'../../../app/page.tsx' | ||
) | ||
expect(plugin.getRelativePathFromAppTypesDir('layout.tsx')).toEqual( | ||
'../../../app/layout.tsx' | ||
) | ||
expect(plugin.getRelativePathFromAppTypesDir('test/page.tsx')).toEqual( | ||
'../../../../app/test/page.tsx' | ||
) | ||
expect( | ||
plugin.getRelativePathFromAppTypesDir('deeply/nested/page.tsx') | ||
).toEqual('../../../../../app/deeply/nested/page.tsx') | ||
}) | ||
|
||
it('should generate correct base import path for nx monorepos', () => { | ||
const plugin = new NextTypesPlugin({ | ||
dir: '/Users/myself/code/nx-monorepo/apps/myproject', | ||
distDir: '../../dist/apps/myproject/.next', | ||
appDir: '/Users/myself/code/nx-monorepo/apps/myproject/app', | ||
dev: false, | ||
isEdgeServer: false, | ||
pageExtensions: ['tsx', 'ts', 'jsx', 'js'], | ||
typedRoutes: false, | ||
originalRewrites: undefined, | ||
originalRedirects: undefined, | ||
}) | ||
expect(plugin.getRelativePathFromAppTypesDir('layout.tsx')).toEqual( | ||
'../../../../../../apps/myproject/app/layout.tsx' | ||
) | ||
expect(plugin.getRelativePathFromAppTypesDir('test/page.tsx')).toEqual( | ||
'../../../../../../../apps/myproject/app/test/page.tsx' | ||
) | ||
}) | ||
|
||
it('should generate correct base import path for custom projects', () => { | ||
const plugin = new NextTypesPlugin({ | ||
dir: '/Users/myself/code/custom-project/frontend/ui', | ||
distDir: '../dist/ui/.next', | ||
appDir: '/Users/myself/code/custom-project/frontend/ui/app', | ||
dev: false, | ||
isEdgeServer: false, | ||
pageExtensions: ['tsx', 'ts', 'jsx', 'js'], | ||
typedRoutes: false, | ||
originalRewrites: undefined, | ||
originalRedirects: undefined, | ||
}) | ||
expect(plugin.getRelativePathFromAppTypesDir('layout.tsx')).toEqual( | ||
'../../../../../ui/app/layout.tsx' | ||
) | ||
expect(plugin.getRelativePathFromAppTypesDir('test/page.tsx')).toEqual( | ||
'../../../../../../ui/app/test/page.tsx' | ||
) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters