Skip to content

Commit

Permalink
feat(nuxt): trying to make it wokr
Browse files Browse the repository at this point in the history
  • Loading branch information
mandarini committed Nov 10, 2023
1 parent 98d59da commit 9565424
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 2,839 deletions.
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,6 @@
"node-fetch": "^2.6.7",
"npm-package-arg": "11.0.1",
"nuxi": "npm:nuxi-nightly@3.9.2-1699007958.251cab5",
"nuxt": "^3.8.0",
"nx": "17.1.1",
"octokit": "^2.0.14",
"open": "^8.4.0",
Expand Down
1 change: 1 addition & 0 deletions packages/nuxt/src/executors/build/build.impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export async function* nuxtBuildExecutor(
context.projectsConfigurations.projects[context.projectName].root;
const { runCommand } = await loadNuxiDynamicImport();
try {
// Look here for lifecycle hooks and options: https://nuxt.com/docs/api/advanced/hooks#nuxt-hooks-build-time
await runCommand('build', [projectRoot], {
overrides: {
...options,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ export default defineVitestConfig({
include: ['my-app/src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
coverage: {
reportsDirectory: '../coverage/my-test-react-app',
reportsDirectory: '../coverage/my-app',
},
},
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
import { defineNuxtConfig } from 'nuxt/config';

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
Expand Down
2 changes: 1 addition & 1 deletion packages/nuxt/src/generators/application/lib/add-vitest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export function addVitest(
include: ['${projectRoot}/src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
coverage: {
reportsDirectory: '${projectOffsetFromRoot}coverage/my-test-react-app',
reportsDirectory: '${projectOffsetFromRoot}coverage/${projectRoot}',
},
},
});
Expand Down
129 changes: 61 additions & 68 deletions packages/nuxt/src/plugins/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,7 @@ import {
TargetConfiguration,
joinPathFragments,
} from '@nx/devkit';
import type { NuxtOptions } from 'nuxt/schema';

import { basename, dirname, extname, join } from 'path';
import { registerTsProject } from '@nx/js/src/internal';

import { getRootTsConfigPath } from '@nx/js';
import { basename, dirname, join } from 'path';

import { readTargetDefaultsForTarget } from 'nx/src/project-graph/utils/project-configuration-utils';
import { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';
Expand Down Expand Up @@ -77,7 +72,9 @@ function buildNuxtTargets(
options: NuxtPluginOptions,
context: CreateNodesContext
) {
const nuxtConfig: NuxtOptions = getNuxtConfig(configFilePath, context);
const nuxtConfig: {
buildDir: string;
} = getInfoFromNuxtConfig(configFilePath, context);
const namedInputs = getNamedInputs(projectRoot, context);

const targets: Record<string, TargetConfiguration<ExecutorOptions>> = {};
Expand All @@ -100,7 +97,9 @@ function buildTarget(
[inputName: string]: any[];
},
projectRoot: string,
nuxtConfig: NuxtOptions
nuxtConfig: {
buildDir: string;
}
) {
const targetDefaults = readTargetDefaultsForTarget(
'build',
Expand Down Expand Up @@ -166,71 +165,65 @@ function serveTarget(
};
}

function testTarget(
context: CreateNodesContext,
namedInputs: {
[inputName: string]: any[];
},
projectRoot: string
) {
const targetDefaults = readTargetDefaultsForTarget(
'test',
context.nxJsonConfiguration.targetDefaults,
'@nx/vite:test'
);

const reportsDirectory =
viteConfig?.test?.coverage?.reportsDirectory ??
joinPathFragments(offsetFromRoot(projectRoot), 'coverage', projectRoot);

const baseTargetConfig: TargetConfiguration<ExecutorOptions> = {
executor: '@nx/vite:test',
outputs,
options: {
reportsDirectory,
...targetDefaults?.options,
},
};
// function testTarget(
// context: CreateNodesContext,
// namedInputs: {
// [inputName: string]: any[];
// },
// projectRoot: string
// ) {
// const targetDefaults = readTargetDefaultsForTarget(
// 'test',
// context.nxJsonConfiguration.targetDefaults,
// '@nx/vite:test'
// );

// const reportsDirectory =
// viteConfig?.test?.coverage?.reportsDirectory ??
// joinPathFragments(offsetFromRoot(projectRoot), 'coverage', projectRoot);

// const baseTargetConfig: TargetConfiguration<ExecutorOptions> = {
// executor: '@nx/vite:test',
// outputs,
// options: {
// reportsDirectory,
// ...targetDefaults?.options,
// },
// };
// return {
// ...baseTargetConfig,
// cache: targetDefaults?.cache ?? true,
// inputs:
// targetDefaults?.inputs ?? 'production' in namedInputs
// ? ['default', '^production']
// : ['default', '^default'],
// options: {
// ...baseTargetConfig.options,
// },
// };
// }

function getInfoFromNuxtConfig(
configFilePath: string,
context: CreateNodesContext
): {
buildDir: string;
} {
// const resolvedPath = join(context.workspaceRoot, configFilePath);
// readFileSync(resolvedPath);
// AST parsing
// see here for more: packages/nuxt/src/executors/build/build.impl.ts
return {
...baseTargetConfig,
cache: targetDefaults?.cache ?? true,
inputs:
targetDefaults?.inputs ?? 'production' in namedInputs
? ['default', '^production']
: ['default', '^default'],
options: {
...baseTargetConfig.options,
},
buildDir: 'dist/project-name/.nuxt',
};
}

function getNuxtConfig(
configFilePath: string,
context: CreateNodesContext
): NuxtOptions {
const resolvedPath = join(context.workspaceRoot, configFilePath);

let module: any;
if (extname(configFilePath) === '.ts') {
const tsConfigPath = getRootTsConfigPath();

if (tsConfigPath) {
const unregisterTsProject = registerTsProject(tsConfigPath);
try {
module = require(resolvedPath);
} finally {
unregisterTsProject();
}
} else {
module = require(resolvedPath);
}
} else {
module = require(resolvedPath);
function getOutputs(
projectRoot: string,
nuxtConfig: {
buildDir: string;
}
return module.default ?? module;
}

function getOutputs(projectRoot: string, nuxtConfig: NuxtOptions): string[] {
): string[] {
const buildOutputs = ['{options.outputPath}'];

function getOutput(path: string, projectRoot: string): string {
Expand Down

0 comments on commit 9565424

Please sign in to comment.