From 634909aad3b87cc8760853069d8c502ed7c5d04c Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 21 Dec 2021 17:10:16 +1100 Subject: [PATCH] fix(developer): work around devDependencies bug in npm Relates to https://github.com/npm/cli/issues/2921 This issue arises after moving from npm 6.x to 7.x or later. As the build agents are still on 6.x, we have not yet seen this issue there. As part of the release build for Keyman Developer, we bundle up some files and do some work in a temp folder to prepare folders for release. Even though we are only working with `dependencies` (e.g. using `npm install --production`), packages under `devDependencies` are still wrongly being checked by NPM. As we have two modules present in `devDependencies` that are only available when in the repo path, we need to remove them before attempting to continue. Yuck! ref: https://github.com/npm/cli/issues/3975#issuecomment-985305678 ref: https://github.com/npm/cli/issues/2921 --- windows/src/developer/inst/download.in | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/windows/src/developer/inst/download.in b/windows/src/developer/inst/download.in index 5b99e090531..0637faded60 100644 --- a/windows/src/developer/inst/download.in +++ b/windows/src/developer/inst/download.in @@ -120,6 +120,14 @@ heat-model-compiler: cd $(KEYMAN_WIX_TEMP_MODELCOMPILER) # package-lock.json wasn't bundled; this is needed to keep dependency versions consistent. copy $(KEYMAN_MODELCOMPILER_ROOT)\package-lock.json $(KEYMAN_WIX_TEMP_MODELCOMPILER) +# as of npm v8.x, even though we are only working with `dependencies`, `devDependencies` is +# still checked, and as these two modules are present in devDependencies but are only +# available when in the repo path, we need to remove them before attempting to continue. +# Yuck! ref: https://github.com/npm/cli/issues/3975#issuecomment-985305678 +# ref: https://github.com/npm/cli/issues/2921 +# don't forget to uninstall both at the same time or it *still* fails... + npm uninstall @keymanapp/models-templates @keymanapp/models-wordbreakers + npm install kmtypes.tgz --production --no-optional npm install --production --no-optional