node.jsteamcitynpmkarma-runner

npm check and update package if needed


We need to integrate Karma test runner into TeamCity and for that I'd like to give sys-engineers small script (powershell or whatever) that would:

  1. pick up desired version number from some config file (I guess I can put it as a comment right in the karma.conf.js)

  2. check if the defined version of karma runner installed in npm's global repo

  3. if it's not, or the installed version is older than desired: pick up and install right version

  4. run it: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

So my real question is: "how can one check in a script, if desired version of package installed?". Should you do the check, or it's safe to just call npm -g install everytime?

I don't want to always check and install the latest available version, because other config values may become incompatible


Solution

  • To check if any module in a project is 'old':

    npm outdated
    

    'outdated' will check every module defined in package.json and see if there is a newer version in the NPM registry.

    For example, say xml2js 0.2.6 (located in node_modules in the current project) is outdated because a newer version exists (0.2.7). You would see:

    xml2js@0.2.7 node_modules/xml2js current=0.2.6
    

    To update all dependencies, if you are confident this is desirable:

    npm update
    

    Or, to update a single dependency such as xml2js:

    npm update xml2js
    

    To update package.json version numbers, append the --save flag:

    npm update --save