diff --git a/CMake/NPMInstall.cmake b/CMake/NPMInstall.cmake index 687480f98adeae32f9b44b4b05f4a1e1486a0c01..d7168513f829d4e0c73a5d0bdbd129946613ec70 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,8 +112,18 @@ 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} + DEPENDS + ${JSON_PACKAGE_LOCK_SPECIFICATION} + COMMENT "Copying ${JSON_PACKAGE_SPECIFICATION} to ${NPM_BINARY_DIR}/package.json for ${PACKAGE_NAME}") + + + add_custom_command( + OUTPUT "${NPM_BINARY_DIR}/package-lock.json" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${JSON_PACKAGE_LOCK_SPECIFICATION}" "${NPM_BINARY_DIR}/package-lock.json" + DEPENDS + ${JSON_PACKAGE_LOCK_SPECIFICATION} COMMENT "Copying ${JSON_PACKAGE_SPECIFICATION} to ${NPM_BINARY_DIR}/package.json for ${PACKAGE_NAME}") foreach(file ${SOURCE_FILES}) @@ -161,11 +172,11 @@ 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 NODE_OPTIONS="--max-old-space-size=8192" 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}