From f85a8735b5a56e2cbb2eb9821fa7639b457a779c Mon Sep 17 00:00:00 2001 From: Reinder Kraaij <kraaij@astron.nl> Date: Fri, 17 Nov 2023 08:47:59 +0100 Subject: [PATCH] NPM CI in NPM Install --- CMake/NPMInstall.cmake | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/CMake/NPMInstall.cmake b/CMake/NPMInstall.cmake index 687480f98ad..bedfc0148eb 100644 --- a/CMake/NPMInstall.cmake +++ b/CMake/NPMInstall.cmake @@ -83,8 +83,9 @@ function(npm_install NPM_PACKAGE_SPECIFICATION) endif(NOT NPM_INSTALL_SOURCE) + + string(REPLACE ".json" "-lock.json" JSON_PACKAGE_LOCK_SPECIFICATION "${JSON_PACKAGE_SPECIFICATION}") # Compute the full path to the source, and the public directory, and the json spec - get_filename_component(WEBSITE_PUBLIC_DIR "${NPM_INSTALL_PUBLIC}" REALPATH) get_filename_component(WEBSITE_SOURCE_DIR "${NPM_INSTALL_SOURCE}" REALPATH) get_filename_component(JSON_PACKAGE_SPECIFICATION "${NPM_PACKAGE_SPECIFICATION}" REALPATH) @@ -111,10 +112,17 @@ function(npm_install NPM_PACKAGE_SPECIFICATION) add_custom_command( OUTPUT "${NPM_BINARY_DIR}/package.json" + OUTPUT "${NPM_BINARY_DIR}/package-lock.json" COMMAND ${CMAKE_COMMAND} -E copy_if_different "${JSON_PACKAGE_SPECIFICATION}" "${NPM_BINARY_DIR}/package.json" - DEPENDS ${JSON_PACKAGE_SPECIFICATION} + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${JSON_PACKAGE_LOCK_SPECIFICATION}" "${NPM_BINARY_DIR}/package-lock.json" + DEPENDS + ${JSON_PACKAGE_SPECIFICATION} + ${JSON_PACKAGE_LOCK_SPECIFICATION} COMMENT "Copying ${JSON_PACKAGE_SPECIFICATION} to ${NPM_BINARY_DIR}/package.json for ${PACKAGE_NAME}") + + + foreach(file ${SOURCE_FILES}) add_custom_command(OUTPUT "${NPM_BINARY_DIR}/src/${file}" COMMAND ${CMAKE_COMMAND} -E copy_if_different ${WEBSITE_SOURCE_DIR}/${file} ${NPM_BINARY_DIR}/src/${file} @@ -161,11 +169,13 @@ function(npm_install NPM_PACKAGE_SPECIFICATION) add_custom_command( - OUTPUT "${NPM_BINARY_DIR}/node_modules" "${NPM_BINARY_DIR}/package-lock.json" - COMMAND NODE_OPTIONS="--max-old-space-size=8192" npm install --legacy-peer-deps - DEPENDS "${NPM_BINARY_DIR}/package.json" + OUTPUT "${NPM_BINARY_DIR}/node_modules" + COMMAND ${CMAKE_COMMAND} -E echo "Starting NPM CI" + COMMAND NODE_OPTIONS="--max-old-space-size=8192" npm ci + COMMAND ${CMAKE_COMMAND} -E echo "Completed NPM CI" + DEPENDS "${NPM_BINARY_DIR}/package.json" "${NPM_BINARY_DIR}/package-lock.json" WORKING_DIRECTORY "${NPM_BINARY_DIR}" - COMMENT "Downloading npm dependencies for ${NPM_BINARY_DIR}/package.json") + COMMENT "Downloading npm dependencies for ${NPM_BINARY_DIR}/package.json with the help of the lock file") add_custom_command( TARGET start_development_server_${PACKAGE_NAME} -- GitLab