Почему «nuxt generate» с помощью модуля @nuxt / pwa всегда генерирует значок по умолчанию в Gitlab-CI?

#gitlab #icons #nuxt.js #gitlab-ci #progressive-web-apps

#gitlab #Значки #nuxt.js #gitlab-ci #progressive-web-apps

Вопрос:

У меня следующая проблема. Я использую nuxt с модулем pwa для создания предварительно отрисованной веб-страницы. Модуль значков @nuxt / pwa должен генерировать значки разного размера для манифеста.

Это также работает, когда я запускаю nuxt generate свой ноутбук.

В моем конвейере gitlab-ci генерация также работает, но она всегда генерирует значок nuxt по умолчанию

https://d33wubrfki0l68.cloudfront.net/6ff34ec8760318b99888ee4b75d1e265170a84b9/6479c/logos/nuxt.svg

Этого значка я не могу найти в своем рабочем пространстве, поэтому я предполагаю, что он каким-то образом упоминается в сборке docker из node_modules.

Я использую следующее задание gitlab-ci

 build:
  image: node:alpine
  stage: build
  script:
    - npm run generate
  artifacts:
    paths:
      - dist/*
    expire_in: 14 days
  only:
    - master
  

package.json Выглядит так:

   "scripts": {
    "generate": "nuxt generate",
    ...
  },
  "dependencies": {
    "@nuxtjs/pwa": "^3.0.0-beta.20",
    "nuxt": "^2.14.0",
    ...
  },
  "devDependencies": {
   ...
  }
  

Я также перепробовал много разных настроек в моем nuxt.conf.js как я и предполагал, ссылка на значок указана неправильно.

Это была моя последняя попытка

   pwa: {
    icon: {
      source: resolve(__dirname, './client/static/icon.png'),
    },
  },
  

Но поскольку он найден локально, я считаю, что это правильно.

Кто-нибудь знает, почему nuxt generate это не работает в gitlab-ci?

Ответ №1:

Проблема, похоже, в старом кэше, расположенном по адресу /node_modules/.cache/pwa/icon

Nuxt не генерирует новые значки, если имена файлов не изменены, поэтому используются значки по умолчанию. Особенно, если ваш новый файл значков — «icon.png».

Вы могли бы сделать это тремя способами:

  1. Удалите кэш /node_modules/.cache/pwa/icon перед развертыванием, но это работает только с локальной средой / dev, поэтому это исключено.

  2. Вы можете переименовать свой файл, как было предложено в другом комментарии, но вам придется переименовывать его каждый раз, когда вы меняете файл. Так что, хотя это и сработает, это все еще далеко не хорошо, даже для хакерского решения.

  3. Третий подход заключается в удалении этой папки в вашем скрипте генерации yarn / npm. Это будет выглядеть примерно так:

 generate: 'rm -r /node_modules/.cache/pwa/icon amp;amp; nuxt generate';
  

Комментарии:

1. Для меня я должен использовать generate: 'rm -r node_modules/.cache/pwa/icon amp;amp; nuxt generate'; (удалить / перед node_modules).

Ответ №2:

У меня была такая же проблема, и значки не обновлялись также в моей локальной среде. На данный момент я смог это исправить, добавив

 pwa: {
    icon: {
         fileName: 'app-icon.png',
    },
},
  

на мой nuxt.config.js и соответствующим образом измените имя файла. Но это, вероятно, немного халтурно.

Я использую Netlify для развертывания и очистил там кеш, но безуспешно. Вы очистили кэш бегуна в Gitlab, а затем попробовали еще раз?

Комментарии:

1. Я не уверен, и мне нужно сузить, была ли это очистка кэша или изменение конфигурации с явной ссылкой на значок, но теперь это работает. Спасибо за подсказку.

2. Я дважды проверил свой конвейер. Это был кэш бегунов. После его очистки я также могу использовать неявную версию nuxt.config.js . Сбой с одной из двух сложных задач в информатике (именование вещей и) аннулирование кэша: -O

Ответ №3:

Это сработало для меня,

Удалите следующее:

  1. node_modules /.cache
  2. .nuxt
  3. dist (если сгенерирован)

Затем выполните следующие действия:

 npm install
npm run generate