`gatsby-plugin-sharp` 和 `mozjpeg` 的依赖是什么?

问题描述

gatsby-plugin-sharp(或者更具体地说是子依赖项 mozjpeg)存在一个问题,它会给出异常 autoreconf: not found,但问题实际上与其他依赖项有关。有各种各样的帖子,人们找到了各种依赖项的一种组合或另一种组合来使其为他们工作(例如https://stackoverflow.com/a/66170062/2475012https://github.com/gatsbyjs/gatsby/issues/19432#issuecomment-553644600)。但是似乎没有任何您需要的确切依赖项的明确列表。

我在 ubuntu-latest 的 GitHub Actions 上运行 Gatsby。我的package.json

{
  "name": "matt.si","private": false,"description": "Mattsi Jansky's personal blog","author": "Mattsi Jansky","scripts": {
    "build": "gatsby build","dev": "gatsby develop","test": "jest","test:updateSnapshots": "jest --updateSnapshot","test:visual": "yarn build && ./scripts/run-visual-regression-tests.sh","test:visual:update": "docker-compose run visual-regression-tests reference","test:visual:approve": "docker-compose run visual-regression-tests approve","test:visual:report": "open tests/visual/backstop_data/html_report/index.html","lint": "eslint --ext .js,.jsx --ignore-pattern public ."
  },"dependencies": {
    "babel-preset-gatsby": "0.5.1","gatsby": "2.24.87","gatsby-image": "2.4.21","gatsby-plugin-Feed": "2.5.19","gatsby-plugin-google-analytics": "2.3.19","gatsby-plugin-manifest": "2.4.35","gatsby-plugin-offline": "3.2.37","gatsby-plugin-react-helmet": "3.3.14","gatsby-plugin-sass": "2.3.21","gatsby-plugin-sharp": "3.0.0","gatsby-remark-footnotes": "0.0.7","gatsby-remark-images": "3.3.39","gatsby-remark-prismjs": "3.5.16","gatsby-source-filesystem": "2.3.36","gatsby-transformer-remark": "2.8.46","gatsby-transformer-sharp": "2.5.20","identity-obj-proxy": "3.0.0","node-sass": "4.14.1","prismjs": "1.22.0","prop-types": "15.7.2","react": "16.14.0","react-dom": "16.14.0","react-helmet": "6.1.0","react-test-renderer": "16.14.0","rehype-react": "6.1.0"
  },"devDependencies": {
    "babel-jest": "26.6.1","enzyme": "3.11.0","enzyme-adapter-react-16": "1.15.5","eslint": "7.12.0","eslint-plugin-react": "7.21.5","jest": "26.6.1","wait-on": "5.2.0"
  },"license": "GPL-3.0-only"
}

GitHub Actions 定义的相关部分:

name: Run tests
on: [push]

jobs:
  build:
    name: Run Tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      
      - name: Install System Dependencies
        run: sudo apt-get update && sudo apt-get install make nasm autoconf automake libtool dpkg pkg-config libpng-dev g++

      - name: Install Project Dependencies
        uses: borales/actions-yarn@v2.1.0
        with:
          cmd: install

它在 autoreconf: not found 步骤以 Install Project Dependencies 失败。我尝试将 autoreconf 添加Install System Dependencies 步骤,但它已经是最新版本。我试过 buildessentials,但它也已经是最新版本了。我添加libvips-dev,它似乎是 libvipsapt-get 库的名称,并且确实安装了该库。在查找与 mozjpeg (https://stackoverflow.com/a/64927666/2475012) 相同的问题后,我添加sudo apt-get install make nasm autoconf automake libtool dpkg pkg-config libpng-dev g++。但除 nasm 之外的所有这些都已经存在。

但每次我仍然遇到 autoreconf: not found 问题。具体来说,完整错误 (https://github.com/Mattsi-Jansky/matt.si/runs/2051073618):

[4/4] Building fresh packages...
error /github/workspace/node_modules/mozjpeg: Command Failed.
Exit code: 1
Command: node lib/install.js
Arguments: 
Directory: /github/workspace/node_modules/mozjpeg
Output:
⚠ spawn /github/workspace/node_modules/mozjpeg/vendor/cjpeg ENOENT
  ⚠ mozjpeg pre-build test Failed
  ℹ compiling from source
  ✖ Error: Command Failed: /bin/sh -c autoreconf -fiv
/bin/sh: autoreconf: not found


    at /github/workspace/node_modules/bin-build/node_modules/execa/index.js:231:11
    at runMicrotasks (<anonymous>)
    at processticksAndRejections (internal/process/task_queues.js:93:5)
    at async Promise.all (index 0)
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

所以我不知所措。我想我的问题是:a) 我是否在这里遵循正确的线程,试图找到正确的依赖项? b) 我应该添加哪些依赖项?

解决方法

gatsby-plugin-sharp,根据documentation

另一方面,mozjpeg 有:

,

通过将 borales/actions-yarn 的用法替换为 setup node(包括 Yarn)来解决此问题。

borales/actions-yarn 用于 GitHub Actions 测试版,并不是运行纱线操作的推荐方式。它们以某种传统方式运行。我不太清楚细节,但我认为发生的情况是 borales/actions-yarn 在没有安装依赖项的单独映像上运行。