Изменение каталога сборки

По умолчанию выходным каталогом сборки для Qwik является папка dist в корневой папке проекта.

В некоторых случаях нам может понадобиться сделать выходной каталог сборки отличным от каталога по умолчанию.

Неправильный путь

Обычно в Vite.js мы делаем это следующим образом:

vite.config.ts
import { defineConfig } from 'vite';
import { qwikVite } from '@builder.io/qwik/optimizer';
import { qwikCity } from '@builder.io/qwik-city/vite';
import { resolve } from 'node:path';
/* VITE_IMPORTS */
 
export default defineConfig(() => {
  const pagesDir = resolve('pages');
 
  return {
    /* VITE_CONFIG */
    build: {
      outDir: '../resources/', // Это значение будет переопределено на `dist` при установке qwikVite().
    },
    plugins: [
      qwikCity({
        pagesDir,
        layouts: {
          default: resolve('src', 'layouts', 'default', 'default.tsx'),
        },
      }),
      qwikVite(/* VITE_QWIK */),
      /* VITE_PLUGINS */
    ],
  };
});

Однако он будет переопределён настройками QwikVite(), поэтому ничего не произойдет, и каталог вывода сборки по-прежнему будет находиться в папке dist.

Правильный путь

Поэтому вместо того, чтобы изменять настройки в Vite.js напрямую, нам просто нужно изменить настройки в QwikVite() следующим образом:

vite.config.ts
import { defineConfig } from 'vite';
import { qwikVite } from '@builder.io/qwik/optimizer';
import { qwikCity } from '@builder.io/qwik-city/vite';
import tsconfigPaths from 'vite-tsconfig-paths';
 
export default defineConfig(() => {
  return {
    ssr: { target: 'webworker', noExternal: true },
    plugins: [
      qwikCity(),
      qwikVite({
        client: {
          outDir: 'resources/', // Это правильная настройка.
        },
      }),
      tsconfigPaths(),
    ],
  };
});

Чтобы выходным каталогом сборки стал каталог resources, переименуйте эту папку.

Участники

Спасибо всем участникам, которые помогли сделать эту документацию лучше!

  • manucorporat
  • adamdbradley
  • the-r3aper7
  • mhevery
  • mrhoodz
  • thejackshelton