为什么带有@nuxt/pwa 模块的`nuxt generate` 总是在Gitlab-CI 中生成默认图标?

tho*_*paw 7 icons gitlab gitlab-ci progressive-web-apps nuxt.js

我有以下问题。我正在使用 nuxt 和 pwa 模块来生成一个预渲染的网页。@nuxt/pwa 图标模块应该为清单生成不同大小的图标。

当我nuxt generate在笔记本电脑上运行时,这也有效。

在我的 gitlab-ci 管道中,生成也在工作,但它总是生成默认的 nuxt 图标

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

这个图标我不能在我的工作区中,所以我想它是在 node_modules 的 docker build 中以某种方式引用的。

我正在使用以下 gitlab-ci 作业

build:
  image: node:alpine
  stage: build
  script:
    - npm run generate
  artifacts:
    paths:
      - dist/*
    expire_in: 14 days
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

package.json如下所示:

  "scripts": {
    "generate": "nuxt generate",
    ...
  },
  "dependencies": {
    "@nuxtjs/pwa": "^3.0.0-beta.20",
    "nuxt": "^2.14.0",
    ...
  },
  "devDependencies": {
   ...
  }
Run Code Online (Sandbox Code Playgroud)

我还在我的 nuxt.conf.js 中尝试了很多不同的设置,因为我猜测图标没有正确引用。

这是我最后一次尝试

  pwa: {
    icon: {
      source: resolve(__dirname, './client/static/icon.png'),
    },
  },
Run Code Online (Sandbox Code Playgroud)

但由于它是在本地发现的,我认为它是正确的。

有谁知道为什么nuxt generate在 gitlab-ci 中不起作用?

小智 16

问题似乎是位于 /node_modules/.cache/pwa/icon

如果文件名未更改,Nuxt 不会生成新图标,这就是使用默认图标的原因。特别是如果您的新图标文件是“icon.png”。

你可以通过这三种方式:

  1. /node_modules/.cache/pwa/icon在部署之前删除缓存,但这仅适用于本地/开发环境,所以这是无效的。

  2. 您可以按照建议的其他评论重命名文件,但每次更改文件时都必须重命名。因此,虽然这会奏效,但它仍然远远不够好,即使对于一个黑客解决方案也是如此。

  3. 第三种方法是在 yarn/npm 生成脚本中删除该文件夹。这看起来像这样:

generate: 'rm -r /node_modules/.cache/pwa/icon && nuxt generate';
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,我必须使用 `generate: 'rm -r node_modules/.cache/pwa/icon && nuxtgenerate'; `(在node_modules 之前删除`/`)。 (2认同)

Her*_*ann 9

我有同样的问题,图标也没有在我的本地环境中更新。现在我可以通过添加来修复它

pwa: {
    icon: {
         fileName: 'app-icon.png',
    },
},
Run Code Online (Sandbox Code Playgroud)

到我的 nuxt.config.js 并相应地更改文件名。但这可能有点hacky。

我使用 Netlify 进行部署并清除了那里的缓存,但没有运气。您是否在 Gitlab 中清除了 Runner Cache 然后再试了一次?