Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): allow for non-js libs to be moved without errors or the creation of any unneeded tsconfig files #28350

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

KerickHowlett
Copy link

Current Behavior

I have a project that is utilizing the @nx-go/nx-go extension that's used for supporting Go applications.

When I attempt to use the @nx/workspace:move generator to move a Go library, it'll produce an error. (Please refer to the Failure Logs section for said error.)

Sadly, there isn't a consistent means to get the bun to start showing up, but once it does, the issue will persist throughout the workspace's life cycle.

I was able to trace this to the compiled Javascript files within Nx's installed project files under the node_modules directory, which is where I found a workaround. That being to have the secondaryEntryPointImportPaths variable (located within the updateImports function) set with an empty array on the same line it's declared.

However, this will produce a tsconfig.base.json file at the root of the workspace with the text undefined contained within it and with no actual JSON to speak of.

Expected Behavior

I have a project that is utilizing the @nx-go/nx-go extension that's used for supporting Go applications.

The @nx/workspace:move schematic generator should be able to move libraries based in Go and other programming languages without any errors popping up.

It should also do it without generating an empty tsconfig.base.json file if one didn't exist previously. This tends to be the case when there is no Typescript to speak of within the Nx workspace. For example, an Nx workspace initiated with the @nx-go/nx-go preset.

Related Issue(s)

Copy link

vercel bot commented Oct 7, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
nx-dev ✅ Ready (Inspect) Visit Preview Dec 18, 2024 6:05pm

@isaacplmann
Copy link
Collaborator

Don't create a new scope. Use core for changes to workspace. Someone else will review the actual code changes

@KerickHowlett
Copy link
Author

Don't create a new scope. Use core for changes to workspace. Someone else will review the actual code changes

Oh! That's my bad. I'll undo the commitizen changes and amend my commit messages.

@isaacplmann
Copy link
Collaborator

@jaysoo can you take a look at this PR?

@@ -148,8 +149,8 @@ export function updateImports(
to: schema.relativeToRootDestination,
};

if (tsConfig) {
const path = tsConfig.compilerOptions.paths[projectRef.from] as string[];
if (tsConfig && paths.length > 0) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think moving writeJson(...) into the if (tsConfig) is enough to fix the issue.

Updating getRootTsConfigPathInTree is fine since it's only used here and in the remove generator. But we should also change the check to tree.exists(tsConfigPath) to account for null.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That thought did cross my mind, but I was worried about false positives. I'll remove the second clause all the same, though. I'll also go ahead and take a look at tree.exists(tsConfigPath) so that it'll account for null.

I also believe I can greatly clean up the code quite a bit, too, so that it scales far better. I just wanted to hold off on it in favor of getting these essential changes merged quickly first before with as few changes as possible.

Copy link
Author

@KerickHowlett KerickHowlett Nov 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked into updating tree.exists(filePath) to change its argument typing to string | null directly without just adding on another if-operator clause.

From what I can tell, it would require touching 3 additional files (with starting line numbers):

  1. packages/devkit/src/utils/invoke-nx-generator.ts:L131
  2. packages/nx/src/generators/tree.ts:L62
  3. e2e/utils/file-utils.ts:L111

The changes seem fairly straight forward, but since this effects a critical Nx component, I figured we could save it for a second PR that I can submit right after this one gets approved. If anything else, just to keep the PRs better focused.

With that said, I applied the necessary changes locally on my machine.

@KerickHowlett KerickHowlett force-pushed the fix/28349-polyglot-workspace branch from 756614e to 30903de Compare December 17, 2024 22:24
Copy link

nx-cloud bot commented Dec 17, 2024

Your CI Pipeline Execution ↗ for commit f094547 is in progress ⏳

Command Status Duration Result
nx affected --targets=lint,test,build,e2e,e2e-c... ❌ Failed 39m 23s View ↗
nx run-many -t check-imports check-commit check... ✅ Succeeded 1m 5s View ↗
nx-cloud record -- nx-cloud conformance:check ✅ Succeeded <1s View ↗
nx-cloud record -- nx format:check --base=d05f3... ✅ Succeeded 29s View ↗
nx-cloud record -- nx sync:check ✅ Succeeded 28s View ↗
nx documentation --no-dte ✅ Succeeded 46s View ↗

☁️ Nx Cloud last updated this comment at 2024-12-18 18:43:13 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants