diff --git a/packages/project-config/build.js b/packages/project-config/build.js new file mode 100644 index 000000000000..4560f1d78590 --- /dev/null +++ b/packages/project-config/build.js @@ -0,0 +1,28 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +import * as esbuild from 'esbuild' + +const options = { + entryPoints: ['./src/index.ts'], + outdir: 'dist', + + platform: 'node', + target: ['node20'], + bundle: true, + packages: 'external', + + logLevel: 'info', + metafile: true, +} + +await esbuild.build({ + ...options, + format: 'esm', + outExtension: { '.js': '.mjs' }, +}) + +await esbuild.build({ + ...options, + format: 'cjs', + outExtension: { '.js': '.cjs' }, +}) diff --git a/packages/project-config/build.mjs b/packages/project-config/build.mjs deleted file mode 100644 index 2cec19a1a453..000000000000 --- a/packages/project-config/build.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import fs from 'node:fs' - -import * as esbuild from 'esbuild' - -const result = await esbuild.build({ - entryPoints: ['src/index.ts'], - outdir: 'dist', - - bundle: true, - - platform: 'node', - target: ['node20'], - packages: 'external', - - logLevel: 'info', - - // For visualizing the bundle. - // See https://esbuild.github.io/api/#metafile and https://esbuild.github.io/analyze/. - metafile: true, -}) - -fs.writeFileSync('meta.json', JSON.stringify(result.metafile)) diff --git a/packages/project-config/package.json b/packages/project-config/package.json index 6d3e4e692316..2c1e5f34767c 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -7,15 +7,18 @@ "directory": "packages/project-config" }, "license": "MIT", + "type": "module", "exports": { - ".": "./dist/index.js" + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "default": "./dist/index.cjs" }, "types": "./dist/index.d.ts", "files": [ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && run build:types", + "build": "yarn node ./build.js && run build:types", "build:pack": "yarn pack -o redwoodjs-project-config.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,ts,tsx\" --ignore dist --exec \"yarn build\"", diff --git a/packages/project-config/src/config.ts b/packages/project-config/src/config.ts index e8dcdfda4146..4c226ac3ccde 100644 --- a/packages/project-config/src/config.ts +++ b/packages/project-config/src/config.ts @@ -4,7 +4,7 @@ import toml from '@iarna/toml' import merge from 'deepmerge' import { env as envInterpolation } from 'string-env-interpolation' -import { getConfigPath } from './configPath' +import { getConfigPath } from './configPath.js' export enum TargetEnum { NODE = 'node', diff --git a/packages/project-config/src/configPath.ts b/packages/project-config/src/configPath.ts index 697136284f2f..d24e85b039d9 100644 --- a/packages/project-config/src/configPath.ts +++ b/packages/project-config/src/configPath.ts @@ -1,4 +1,4 @@ -import { findUp } from './findUp' +import { findUp } from './findUp.js' const CONFIG_FILE_NAME = 'redwood.toml' diff --git a/packages/project-config/src/index.ts b/packages/project-config/src/index.ts index ae6da932ae6e..e420284a615d 100644 --- a/packages/project-config/src/index.ts +++ b/packages/project-config/src/index.ts @@ -1,4 +1,4 @@ -export * from './config' -export * from './configPath' -export * from './paths' -export * from './findUp' +export * from './config.js' +export * from './configPath.js' +export * from './paths.js' +export * from './findUp.js' diff --git a/packages/project-config/src/paths.ts b/packages/project-config/src/paths.ts index ed79fb75db34..62902ef16fa4 100644 --- a/packages/project-config/src/paths.ts +++ b/packages/project-config/src/paths.ts @@ -3,8 +3,8 @@ import path from 'path' import fg from 'fast-glob' -import { getConfig } from './config' -import { getConfigPath } from './configPath' +import { getConfig } from './config.js' +import { getConfigPath } from './configPath.js' export interface NodeTargetPaths { base: string diff --git a/packages/project-config/tsconfig.json b/packages/project-config/tsconfig.json index 74bdeb595478..78a31c197ddd 100644 --- a/packages/project-config/tsconfig.json +++ b/packages/project-config/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { + "moduleResolution": "NodeNext", + "module": "NodeNext", "baseUrl": ".", "rootDir": "src", "outDir": "dist", diff --git a/packages/vite/bins/rw-vite-dev.mjs b/packages/vite/bins/rw-vite-dev.mjs index ba0e4e5a205a..b136728048b6 100755 --- a/packages/vite/bins/rw-vite-dev.mjs +++ b/packages/vite/bins/rw-vite-dev.mjs @@ -2,9 +2,9 @@ import { createServer } from 'vite' import yargsParser from 'yargs-parser' -import projectConfig from '@redwoodjs/project-config' +import { getPaths } from '@redwoodjs/project-config' -const rwPaths = projectConfig.getPaths() +const rwPaths = getPaths() const startDevServer = async () => { const configFile = rwPaths.web.viteConfig diff --git a/packages/vite/src/__tests__/viteNestedPages.test.mts b/packages/vite/src/__tests__/viteNestedPages.test.mts index ba38be25bbb5..27805d40a1b5 100644 --- a/packages/vite/src/__tests__/viteNestedPages.test.mts +++ b/packages/vite/src/__tests__/viteNestedPages.test.mts @@ -6,7 +6,7 @@ import { transformWithEsbuild } from 'vite' import { test, describe, beforeEach, afterAll, beforeAll, it, expect, vi } from 'vitest' import * as babel from '@babel/core' -import projectConfig from '@redwoodjs/project-config' +import { getPaths } from '@redwoodjs/project-config' import { Flags, @@ -41,7 +41,6 @@ async function transform(srcPath: string) { const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const FIXTURE_PATH = path.join(__dirname, 'fixtures/nestedPages') -const { getPaths } = projectConfig test('transform', async () => { vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {