fix(core): fix convert to monorepo eslint issue (#19713)
This commit is contained in:
parent
85bda9ab8a
commit
40a946a11d
@ -39,6 +39,8 @@ describe('@nx/workspace:convert-to-monorepo', () => {
|
|||||||
|
|
||||||
expect(() => runCLI(`build ${reactApp}`)).not.toThrow();
|
expect(() => runCLI(`build ${reactApp}`)).not.toThrow();
|
||||||
expect(() => runCLI(`test ${reactApp}`)).not.toThrow();
|
expect(() => runCLI(`test ${reactApp}`)).not.toThrow();
|
||||||
|
expect(() => runCLI(`lint ${reactApp}`)).not.toThrow();
|
||||||
|
expect(() => runCLI(`lint e2e`)).not.toThrow();
|
||||||
expect(() => runCLI(`e2e e2e`)).not.toThrow();
|
expect(() => runCLI(`e2e e2e`)).not.toThrow();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -82,15 +82,15 @@ export function updateRelativePathsInConfig(
|
|||||||
const config = tree.read(configPath, 'utf-8');
|
const config = tree.read(configPath, 'utf-8');
|
||||||
tree.write(
|
tree.write(
|
||||||
configPath,
|
configPath,
|
||||||
replaceFlatConfigPaths(config, sourcePath, offset, destinationPath)
|
replaceFlatConfigPaths(config, sourcePath, offset, destinationPath, tree)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
updateJson(tree, configPath, (json) => {
|
updateJson(tree, configPath, (json) => {
|
||||||
if (typeof json.extends === 'string') {
|
if (typeof json.extends === 'string') {
|
||||||
json.extends = offsetFilePath(sourcePath, json.extends, offset);
|
json.extends = offsetFilePath(sourcePath, json.extends, offset, tree);
|
||||||
} else if (json.extends) {
|
} else if (json.extends) {
|
||||||
json.extends = json.extends.map((extend: string) =>
|
json.extends = json.extends.map((extend: string) =>
|
||||||
offsetFilePath(sourcePath, extend, offset)
|
offsetFilePath(sourcePath, extend, offset, tree)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +114,8 @@ function replaceFlatConfigPaths(
|
|||||||
config: string,
|
config: string,
|
||||||
sourceRoot: string,
|
sourceRoot: string,
|
||||||
offset: string,
|
offset: string,
|
||||||
destinationRoot: string
|
destinationRoot: string,
|
||||||
|
tree: Tree
|
||||||
): string {
|
): string {
|
||||||
let match;
|
let match;
|
||||||
let newConfig = config;
|
let newConfig = config;
|
||||||
@ -122,7 +123,7 @@ function replaceFlatConfigPaths(
|
|||||||
// replace requires
|
// replace requires
|
||||||
const requireRegex = RegExp(/require\(['"](.*)['"]\)/g);
|
const requireRegex = RegExp(/require\(['"](.*)['"]\)/g);
|
||||||
while ((match = requireRegex.exec(newConfig)) !== null) {
|
while ((match = requireRegex.exec(newConfig)) !== null) {
|
||||||
const newPath = offsetFilePath(sourceRoot, match[1], offset);
|
const newPath = offsetFilePath(sourceRoot, match[1], offset, tree);
|
||||||
newConfig =
|
newConfig =
|
||||||
newConfig.slice(0, match.index) +
|
newConfig.slice(0, match.index) +
|
||||||
`require('${newPath}')` +
|
`require('${newPath}')` +
|
||||||
@ -143,8 +144,20 @@ function replaceFlatConfigPaths(
|
|||||||
function offsetFilePath(
|
function offsetFilePath(
|
||||||
projectRoot: string,
|
projectRoot: string,
|
||||||
pathToFile: string,
|
pathToFile: string,
|
||||||
offset: string
|
offset: string,
|
||||||
|
tree: Tree
|
||||||
): string {
|
): string {
|
||||||
|
if (
|
||||||
|
eslintConfigFileWhitelist.some((eslintFile) =>
|
||||||
|
pathToFile.includes(eslintFile)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
// if the file is point to base eslint
|
||||||
|
const rootEslint = findEslintFile(tree);
|
||||||
|
if (rootEslint) {
|
||||||
|
return joinPathFragments(offset, rootEslint);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!pathToFile.startsWith('..')) {
|
if (!pathToFile.startsWith('..')) {
|
||||||
// not a relative path
|
// not a relative path
|
||||||
return pathToFile;
|
return pathToFile;
|
||||||
|
|||||||
@ -20,7 +20,7 @@ export async function monorepoGenerator(tree: Tree, options: {}) {
|
|||||||
// Need to determine libs vs packages directory base on the type of root project.
|
// Need to determine libs vs packages directory base on the type of root project.
|
||||||
for (const [, project] of projects) {
|
for (const [, project] of projects) {
|
||||||
if (project.root === '.') rootProject = project;
|
if (project.root === '.') rootProject = project;
|
||||||
projectsToMove.push(project);
|
projectsToMove.unshift(project); // move the root project 1st
|
||||||
}
|
}
|
||||||
|
|
||||||
// Currently, Nx only handles apps+libs or packages. You cannot mix and match them.
|
// Currently, Nx only handles apps+libs or packages. You cannot mix and match them.
|
||||||
|
|||||||
@ -38,7 +38,7 @@ export function maybeExtractEslintConfigIfRootProject(
|
|||||||
// Only need to handle migrating the root rootProject.
|
// Only need to handle migrating the root rootProject.
|
||||||
// If other libs/apps exist, then this migration is already done by `@nx/eslint:lint-rootProject` generator.
|
// If other libs/apps exist, then this migration is already done by `@nx/eslint:lint-rootProject` generator.
|
||||||
migrateConfigToMonorepoStyle?.(
|
migrateConfigToMonorepoStyle?.(
|
||||||
[rootProject.name],
|
[rootProject],
|
||||||
tree,
|
tree,
|
||||||
tree.exists(joinPathFragments(rootProject.root, 'jest.config.ts')) ||
|
tree.exists(joinPathFragments(rootProject.root, 'jest.config.ts')) ||
|
||||||
tree.exists(joinPathFragments(rootProject.root, 'jest.config.js'))
|
tree.exists(joinPathFragments(rootProject.root, 'jest.config.js'))
|
||||||
|
|||||||
@ -12,7 +12,12 @@ export function updateEslintConfig(
|
|||||||
project: ProjectConfiguration
|
project: ProjectConfiguration
|
||||||
) {
|
) {
|
||||||
// if there is no suitable eslint config, we don't need to do anything
|
// if there is no suitable eslint config, we don't need to do anything
|
||||||
if (!tree.exists('.eslintrc.json') && !tree.exists('eslint.config.js')) {
|
if (
|
||||||
|
!tree.exists('.eslintrc.json') &&
|
||||||
|
!tree.exists('eslint.config.js') &&
|
||||||
|
!tree.exists('.eslintrc.base.json') &&
|
||||||
|
!tree.exists('eslint.base.config.js')
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user