From f28e79ef4f853496b435aaef2f719eb1092a54d6 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Sun, 17 Dec 2023 09:46:28 +0000 Subject: [PATCH] Improve resilience of installation check --- install/check.js | 61 ++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/install/check.js b/install/check.js index e0599e51..e23deaec 100644 --- a/install/check.js +++ b/install/check.js @@ -3,34 +3,39 @@ 'use strict'; -const { useGlobalLibvips, globalLibvipsVersion, log, spawnRebuild } = require('../lib/libvips'); +try { + const { useGlobalLibvips, globalLibvipsVersion, log, spawnRebuild } = require('../lib/libvips'); -const buildFromSource = (msg) => { - log(msg); - log('Attempting to build from source via node-gyp'); - try { - require('node-addon-api'); - log('Found node-addon-api'); - } catch (err) { - log('Please add node-addon-api to your dependencies'); - return; - } - try { - const gyp = require('node-gyp'); - log(`Found node-gyp version ${gyp().version}`); - } catch (err) { - log('Please add node-gyp to your dependencies'); - return; - } - log('See https://sharp.pixelplumbing.com/install#building-from-source'); - const status = spawnRebuild(); - if (status !== 0) { - process.exit(status); - } -}; + const buildFromSource = (msg) => { + log(msg); + log('Attempting to build from source via node-gyp'); + try { + require('node-addon-api'); + log('Found node-addon-api'); + } catch (err) { + log('Please add node-addon-api to your dependencies'); + return; + } + try { + const gyp = require('node-gyp'); + log(`Found node-gyp version ${gyp().version}`); + } catch (err) { + log('Please add node-gyp to your dependencies'); + return; + } + log('See https://sharp.pixelplumbing.com/install#building-from-source'); + const status = spawnRebuild(); + if (status !== 0) { + process.exit(status); + } + }; -if (useGlobalLibvips()) { - buildFromSource(`Detected globally-installed libvips v${globalLibvipsVersion()}`); -} else if (process.env.npm_config_build_from_source) { - buildFromSource('Detected --build-from-source flag'); + if (useGlobalLibvips()) { + buildFromSource(`Detected globally-installed libvips v${globalLibvipsVersion()}`); + } else if (process.env.npm_config_build_from_source) { + buildFromSource('Detected --build-from-source flag'); + } +} catch (err) { + const summary = err.message.split(/\n/).slice(0, 1); + console.log(`sharp: skipping install check: ${summary}`); }