Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/workflow/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ async function bundleVite({ settings }) {
fs.rmSync(settings.output(), { recursive: true, force: true });
}

let viteConfig = buildViteProductionConfig(settings);
let viteConfig = await buildViteProductionConfig(settings);

const { modifyViteConfig } = settings.config();
if (typeof modifyViteConfig === 'function') {
Expand Down
2 changes: 1 addition & 1 deletion packages/workflow/scripts/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ async function webVite() {
const { createServer } = await import('vite');
const { default: buildViteConfig } = await import('../vite.config.js');

let viteConfig = buildViteConfig(settings);
let viteConfig = await buildViteConfig(settings);

const { modifyViteConfig } = settings.config();
if (typeof modifyViteConfig === 'function') {
Expand Down
21 changes: 21 additions & 0 deletions packages/workflow/tests/workflowConfigs.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import settings from '../settings/index.js';
import baseConfig from '../webpack.config.js';
import prodConfig from '../webpack.config.production.js';
import profileConfig from '../webpack.config.profile.js';
import buildViteConfig from '../vite.config.js';
import buildViteProductionConfig from '../vite.config.production.js';

const NOW = '2023-03-28T16:07:07.909Z';

Expand Down Expand Up @@ -33,3 +35,22 @@ describe('webpack configs', () => {
expect(stabilizePaths(config)).toMatchSnapshot();
});
});

describe('vite configs', () => {
beforeAll(async () => {
await settings.init();
});

it('resolves the vite dev config without ERR_REQUIRE_ESM', async () => {
const config = await buildViteConfig(settings);
expect(config).toBeDefined();
expect(config.root).toBeDefined();
expect(config.plugins.length).toBeGreaterThan(0);
});

it('resolves the vite production config without ERR_REQUIRE_ESM', async () => {
const config = await buildViteProductionConfig(settings);
expect(config).toBeDefined();
expect(config.build).toBeDefined();
});
});
17 changes: 7 additions & 10 deletions packages/workflow/vite.config.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { createRequire } from 'module';
import fs from 'fs';
import path from 'path';
import Logger from '@availity/workflow-logger';
import { toViteProxy } from './scripts/proxy.js';
import paths from './helpers/paths.js';
import resolveModule from './helpers/resolve-module.js';

const require = createRequire(import.meta.url);

const buildViteConfig = (settings) => {
const buildViteConfig = async (settings) => {
const resolveApp = (relativePath) => path.resolve(settings.app(), relativePath);
const getVersion = () => settings.pkg().version || 'N/A';

Expand All @@ -30,22 +28,22 @@ const buildViteConfig = (settings) => {
// SWC-based React plugin — 20-70x faster JSX/TS transforms than Babel-based alternative.
// Falls back to @vitejs/plugin-react (Babel) if SWC plugin isn't installed.
try {
const reactSwc = require('@vitejs/plugin-react-swc');
const { default: reactSwc } = await import('@vitejs/plugin-react-swc');
plugins.push(reactSwc());
} catch {
const react = require('@vitejs/plugin-react');
const { default: react } = await import('@vitejs/plugin-react');
plugins.push(react());
}

// tsconfig paths support (replaces TsconfigPathsPlugin)
if (fs.existsSync(paths.tsconfig)) {
const tsconfigPaths = require('vite-tsconfig-paths');
const { default: tsconfigPaths } = await import('vite-tsconfig-paths');
plugins.push(tsconfigPaths());
}

// Static file copying (replaces CopyWebpackPlugin)
if (fs.existsSync(paths.appStatic)) {
const { viteStaticCopy } = require('vite-plugin-static-copy');
const { viteStaticCopy } = await import('vite-plugin-static-copy');
plugins.push(
viteStaticCopy({
targets: [
Expand All @@ -60,7 +58,7 @@ const buildViteConfig = (settings) => {

// ESLint integration (replaces ESLintPlugin)
try {
const eslintPlugin = require('vite-plugin-checker');
const { default: eslintPlugin } = await import('vite-plugin-checker');
plugins.push(
eslintPlugin({
eslint: {
Expand Down Expand Up @@ -180,7 +178,6 @@ const buildViteConfig = (settings) => {

for (const [pkgName, locations] of packages) {
if (locations.size > 1) {
const Logger = require('@availity/workflow-logger');
Logger.warn(
`Duplicate package: ${pkgName} bundled from ${locations.size} locations:\n${
[...locations].map((loc) => ` - ${loc}`).join('\n')
Expand Down
4 changes: 2 additions & 2 deletions packages/workflow/vite.config.production.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import deepMerge from './helpers/deep-merge.js';
import buildViteConfig from './vite.config.js';

const buildViteProductionConfig = (settings) => {
const baseConfig = buildViteConfig(settings);
const buildViteProductionConfig = async (settings) => {
const baseConfig = await buildViteConfig(settings);

const productionOverrides = {
build: {
Expand Down
Loading