From a5575e0d8e728f98f407b52085f85cbe9c19c81f 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 321700a9e51..410314314a8 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