我正在使用Jenkins构建(mvn)我的项目。 Jenkins配置为运行npm install
和bower install
。因此,每次构建项目时,npm install
都会运行,因此每次构建时间都更长。所以我想只有在package.json中有任何更改时才会运行npm install
,例如添加新包,更改版本或删除任何内容等。
我搜索了很多东西以找到实现这一目标的方法,但失败了。
我可以用任何插件来实现这个目标吗?
任何人都可以帮我找到一种方法吗?
提前致谢。
答案 0 :(得分:4)
我和你有同样的问题并写了npm-install-changed
。
使用npm install -g npm-install-changed
安装,并运行npm-install-changed而不是通常的npm install
。
让我知道它是否适合你。
答案 1 :(得分:0)
如果您使用的是Pipeline syntax,则在构建的SCM changeset
包含以下内容的情况下,可以使用内置条件执行阶段一个或多个匹配给定字符串或glob的文件。示例:
stage('Install dependencies') {
when {
changeset "package.json"
}
steps {
sh 'npm install'
}
}
when
指令允许管道根据给定条件确定是否应执行该阶段。
仅当代码已更改时,您也可以运行npm install
和npm build
。
stage('Build') {
when {
anyOf {
changeset "src/**/*.ts"
changeset "package.json"
}
}
steps {
sh 'npm install'
sh 'npm build'
}
}
当至少一个嵌套条件为true时,anyOf
执行阶段。
希望有帮助
答案 2 :(得分:0)
如果使用Git,我们可以使用Jenkins环境变量,并运行这样的命令
git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT | grep package.json && npm install
仅当package.json
发生变化时,此程序才会运行NPM安装。