Узел NextJS приложение перекомпилируется при работе в режиме dev = true - PullRequest
0 голосов
/ 17 мая 2019

У меня есть приложение NextJS, которое я создаю на сервере сборки, а затем развертываю на другом сервере для его размещения.

Когда я запускаю приложение в режиме разработки, npm хочет перекомпилировать приложение, даже если все встроенные компоненты все еще существуют. (следующая папка и т. д.)

Когда я запускаю приложение в режиме без разработки, приложение запускается без попыток сборки.

Почему npm хочет пересобрать приложение, когда const app = next({ true });?

В server / server.js

const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });

В упаковке. Json

"scripts": {
    "dev": "NODE_ENV=development npm start",
    "staging": "NODE_ENV=staging npm start",
    "prod": "NODE_ENV=production npm start",
    "build": "next build",
    "start": "node server/server.js"
}

Как я запускаю приложение:

Разработка: npm run dev

Производство: npm run prod

1 Ответ

0 голосов
/ 21 мая 2019

Из-за отсутствия лучшего описания папка .next является «оптимизированной» версией вашего приложения.В процессе разработки вам нужно постоянно перестраивать папку .next, потому что именно здесь вы обслуживаете свои файлы.Во время разработки вы можете увидеть, как .next восстанавливается сам.В производстве вы должны создать приложение только один раз.

Я полагаю, что если вы развертываете в Теперь , он будет создавать папку .next, если у вас есть скрипты , как они определены в настройке .Однако я использую Docker для своих сборок, поэтому мне нужно собрать папку .next через шаг сборки.Вот пример Dockerfile и соответствующего package.json.

Dockerfile

FROM node:10-alpine AS builder
WORKDIR /app
COPY ./app .  
RUN yarn install && yarn next-build
EXPOSE 80
CMD yarn start

package.json

...
"scripts": {
   "next-build": "next build",
   "start": "NODE_ENV=production node server/app.js",
...

Итак, в процессе производства мои шаги сборки: 1. УстановитьМодули npm 2. Создайте мою папку .next 3. Запустите мой сервер.

Вкратце: В производственном процессе, поскольку вы не запускаете скрипт "next-build", прежде чем запустить "npm run prod", вы не перестраиваете папку .next.При разработке next.js перестраивается каждый раз, когда вы запускаете сервер, чтобы он мог фиксировать ваши изменения в папке .next.

...