@@ -34,23 +34,51 @@ object Yarn extends ExternalCommand("yarn")
3434
3535object ExternalCommand {
3636 private val yarnOptions = List (" --non-interactive" , " --mutex" , " network" )
37- private def syncYarnLockfile (baseDir : File , installDir : File , logger : Logger )(
38- yarnCommand : => Unit ): Unit = {
39- val sourceLockFile = baseDir / " yarn.lock"
40- val targetLockFile = installDir / " yarn.lock"
37+
38+ private def syncLockfile (
39+ lockFileName : String ,
40+ baseDir : File ,
41+ installDir : File ,
42+ logger : Logger
43+ )(
44+ command : => Unit
45+ ): Unit = {
46+ val sourceLockFile = baseDir / lockFileName
47+ val targetLockFile = installDir / lockFileName
48+
4149 if (sourceLockFile.exists()) {
4250 logger.info(" Using lockfile " + sourceLockFile)
4351 IO .copyFile(sourceLockFile, targetLockFile)
4452 }
4553
46- yarnCommand
54+ command
4755
4856 if (targetLockFile.exists()) {
4957 logger.debug(" Wrote lockfile to " + sourceLockFile)
5058 IO .copyFile(targetLockFile, sourceLockFile)
5159 }
5260 }
5361
62+ private def syncYarnLockfile (
63+ baseDir : File ,
64+ installDir : File ,
65+ logger : Logger
66+ )(
67+ command : => Unit
68+ ): Unit = {
69+ syncLockfile(" yarn.lock" , baseDir, installDir, logger)(command)
70+ }
71+
72+ private def syncNpmLockfile (
73+ baseDir : File ,
74+ installDir : File ,
75+ logger : Logger
76+ )(
77+ command : => Unit
78+ ): Unit = {
79+ syncLockfile(" package-lock.json" , baseDir, installDir, logger)(command)
80+ }
81+
5482 /**
5583 * Locally install NPM packages
5684 *
@@ -74,8 +102,9 @@ object ExternalCommand {
74102 logger)
75103 }
76104 } else {
77- Npm .run(" install" +: (npmPackages ++ npmExtraArgs): _* )(installDir,
78- logger)
105+ syncNpmLockfile(baseDir, installDir, logger) {
106+ Npm .run(" install" +: (npmPackages ++ npmExtraArgs): _* )(installDir, logger)
107+ }
79108 }
80109
81110 def install (baseDir : File ,
@@ -90,6 +119,8 @@ object ExternalCommand {
90119 logger)
91120 }
92121 } else {
93- Npm .run(" install" +: npmExtraArgs : _* )(installDir, logger)
122+ syncNpmLockfile(baseDir, installDir, logger) {
123+ Npm .run(" install" +: npmExtraArgs : _* )(installDir, logger)
124+ }
94125 }
95126}
0 commit comments