In my opinion, $ npm prune --production is better to remove devDependencies because npm install downloads dependencies but npm prune only removes devDependencies, doesn't downloads dependencies. Small Benchmark with your example package.json: $ cat package.json { "name" : "layerjs" , "version" : "1.0.0" , "description" : "This is the lambda layer generated for the service" , "main" : "index.js" , "scripts" : { "test" : "echo \"Error: no test specified\" && exit 1" }, "keywords" : [], "author" : "" , "license" : "ISC" , "dependencies" : { "jsonwebtoken" : "^8.5.1" , "pdfkit" : "^0.11.0" , "uuid4" : "^2.0.2" , "xlsx" : "^0.16.9" }, "devDependencies" : { "aws-sdk" : "^2.805.0" } } $ npm install # reinstall all dependencies ... $ rm -rf node_modules $ time npm install --production ... added 146 packages from 120 contributors and audited 158 packages in 3.491s ... npm install --production 3.29s user 1.81s system 99% cpu 5.122 total $ npm install # reinstall all Dependencies ... $ time npm prune --production ... removed 12 packages and audited 146 packages in 1.3s ... npm prune --production 1.52s user 0.44s system 95% cpu 2.054 total