Closed Nelfimov closed 9 months ago
@Nelfimov
В дев режиме приложение запускается. Но корректно не билдится.
Пробовал на последней 13-той и 14-той версиях, билд в standalone
режиме выполняется, но не создаёт необходимой структуры.
Он просто копирует локальные пакеты в standalone
и dist
папки и всё. Если в этих же зависимостях вернуться к версии 12.3.4
, то билд проходит нормально, build start
выполняется.
Создал минимальную структуру:
app
entrypoints
renderer
fragments
pages
ui
Попробуй поэкспериментировать с next.config.js
Возможно что-то из наших опций поменяло свой апи.
Предлагаю начать с минимального output: standalone и идти дальше
Так же попробуй без монорепозитория билд - страницы и фрагменты держи прямо в энтрипоинте.
Задача - понять чем мы отличаемся от стока что билд идет некорректно.
@Nelfimov
Попробуй поэкспериментировать с next.config.js Возможно что-то из наших опций поменяло свой апи. Предлагаю начать с минимального output: standalone и идти дальше
Пробовал.
externalDir: true,
workerThreads: true,
esmExternals: 'loose',
Без этих опций билд даже не запускался, т.к не видел импортируемых компонент.
swcFileReading: false
- как я понял, устаревшая опция. В последней версии некста она уже не поддерживается.
Так же попробуй без монорепозитория билд - страницы и фрагменты держи прямо в энтрипоинте. Задача - понять чем мы отличаемся от стока что билд идет некорректно.
Вынес компоненты на верхний уровень, чтобы в проекте использовался только корневой package.json
.
В этом случае билд проходит. standalone
папка создаётся не в dist
, а в .next
и там нет index.js
, зато в остальном структура папок нормальная и приложение запускается с server.js
.
@Nelfimov
В доке сказано, что outputFileTracingRoot
по умолчанию считает корнем расположение конфига.
Но, видимо, это не так. Т.к явно указать корень помогло.
Некст начал генерировать почти правильную структуру с следующим конфигом:
const path = require('path');
module.exports = {
experimental: {
externalDir: true,
outputFileTracingRoot: path.join(__dirname, './'),
esmExternals: 'loose',
},
output: 'standalone'
}
Нюанс только в том, что папка static
генерируется не в dist
а в .next/static
.
Если её вручную подложить в dist/src/.next
, то всё запускается нормально с node dist/src/server.js
Посмотри наши билд скрипты в проектах. В standalone нужно вручную переносить некоторые папки, такие как static и public
@Nelfimov
Поправил скрипты. Добавил базовую тему, ui/layout
с @atls-ui-parts/layout
и identity
-ентрипоинт.
yarn prepack
- отрабатывает без ошибок, yarn start
- запускается для каждого энтрипоинты, переменные темы применяются.
Скрипт на проверку билда отрабатывает нестабильно. Иногда выполняется с ошибками, иногда без. При этом файлы генерируются, yarn start
отрабатывает в любом случае.
Также yarn check
отрабатывает с ошибками. Все логи ниже, ПР с кодом - https://github.com/atls-lab/frontend/pull/3
С чем связан запрос на фичу?
Необходимо найти способ успешного билда приложения на
NextJS@latest
.Расскажите как вы это себе видите
typescript
версий выше 5NextJS
standalone
Definition of done (критерий готовности)
Приложение билдится, запускается как в дев так и в прод режимах.
Приложите пример реализаций
No response
Приложите материалы задачи
No response