NPM CI is better than NPM install in your CI/CD

Ismael Garcia - Mar 31 '20 - - Dev Community

A better and faster way to build your pipeline in a node project in general is to use the NPM CI command.

npm ci

The command offers massive improvements to both the performance and reliability of builds for continuous integration / continuous deployment processes, providing a consistent and fast experience for developers using CI/CD in their workflow.

npm ci don't use the package.json to install modules, it uses the package-lock.json file. This ensures reproducible builds—you are getting exactly what you expect on every install.

Example to implement in the Gradlew with the NodeJS plunging:

in the build.gradle file


task npmCi(type: NpmTask) {
    dependsOn npmSetup
    npmCommand = ["ci"]
    inputs.file("package.json")
    inputs.file("package-lock.json")
    outputs.dir("node_modules")
}
npm_run_build.dependsOn npmCi

assemble.dependsOn npm_run_build

Enter fullscreen mode Exit fullscreen mode

And for the .gitlab-ci.yml
Replace the npmInstall in the build and other parts that you're using npmInstall

script:
        - ./gradlew npmCi
        - export NODE_ENV=production
        - ./gradlew --build-cache build
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .