run npm commands (like install
or update
) from grunt.
This plugin is a fork of grunt-npm-command (archived repository)
Reason: https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2
-
Usage (see further down this page)
-
Developers
This guide assumes, that you are familiar with the use of
npm and
grunt.
The plugin can be installed by the following command:
npm install grunt-call-npm --save-dev
Once installed, the plugin may be loaded from within your gruntfile:
grunt.loadNpmTasks( "grunt-call-npm" );
Setup the task configuration as described below (see usage) and run the task:
grunt call_npm
Of cause, the task can be integrated into any complex build process.
The following examples assume that the grunt plugin 'load-grunt-config' is used. Alternatively, the code can of course be integrated into the 'gruntfile.js' file.
// file call_npm.js
module.exports = function ( grunt, options ) {
return {
options: {
opts: { // options passed to nodes 'child_process::spawn'
// Note: this is a default option and can be omitted!
shell: true, // required as of https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2 (default! not required)
// Note: this is a default option and can be omitted!
quiet: true // will execute 'npm help' silently
// Note: this is a default option which defaults to 'false'; it can be omitted.
// ... // any other option that can be passed to 'child_process::spawn' 'opts'
}
},
always: { // this target 'always' of grunt multitask 'call_npm'
options: {
cmd: "help", // will run 'npm help'
args: [ ], // will append any arguments to 'npm help'
cwd: "./path/to/pkg", // will become the working directory of command 'npm help'
dryrun: true // will NOT run 'npm help' but print out the 'npm help' command that would have been run
// opts: {...} // define 'opts' to override 'opts' in default 'options' (s.a.)
}
}
};
};
For 'npm <command>' and matching command line arguments see npm Docs