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}