diff --git a/CMake/NPMInstall.cmake b/CMake/NPMInstall.cmake index 687480f98adeae32f9b44b4b05f4a1e1486a0c01..bedfc0148ebcd9b46c27f8206a053b01040a2e4e 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}