I trying to set up caching of npm packages. This is my plugin configuration:
node {
version = '4.5.0'
npmVersion = '3.10.6'
distBaseUrl = 'https://nodejs.org/dist'
download = true
workDir = file("$webAppSourceAbsolute/nodejs")
nodeModulesDir = file("$webAppSourceAbsolute/")
}
And this is my task:
task npmCacheConfig(type: NpmTask) {
description = "Configure the NPM cache"
outputs.upToDateWhen {
false
}
def npmCacheDir = "${gradle.getGradleUserHomeDir()}/caches/npm"
outputs.files file(npmCacheDir)
args = ['config', 'set', 'cache', npmCacheDir]
}
But when I run this task, I got an error:
:arm-bpa:nodeSetup UP-TO-DATE
:arm-bpa:npmCacheConfig FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':myModule:npmCacheConfig'.
>
Could not run npm command - local npm not found but requested in gradle node configuration.
A common reason for this is an npm-shrinkwrap.json file is present and un-installs npm.
To resolve this, add npm with version '3.10.6' to your package.json.
I can fix it this way:
npmCacheConfig.doFirst {
this.project.node.nodeModulesDir = file("$webAppSourceAbsolute/nodejs/node-v4.5.0-linux-x64/lib/")
}
npmCacheConfig.doLast {
this.project.node.nodeModulesDir = file("$webAppSourceAbsolute/")
}
Is there any way to fix it without this hardcoding?
I have fixed it this way: