DEV Community

loading...

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

ismael garcia
Always ask questions to feed the curiosity and learn something new on the way. El respeto al derecho ajeno es la paz. Benito Juarez Garcia.
Updated on ・1 min read

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

Discussion (0)