To access a variable in npm scripts you would do something like this in your package.json
:
"scripts": {
"preinstall": "echo ${npm_package_name}"
}
The problem is that works only in Unix, not Windows, where you have to use %npm_package_name%
.
Is there a way to do this OS independent? It will be good if npm could do such a variable expansion, before invoking the command.
To make it cross-platform, use cross-var
:
"scripts": {
"preinstall": "cross-var echo ${npm_package_name}"
}
There's no known way to do this that's OS independent.
A good workaround is to execute the command within a node script:
First, change the preinstall
command to execute a node script:
"scripts": {
"preinstall": "node nameEcho.js"
}
Then you define the command in the nameEcho.js file:
// require the package.json file
var pjson = require('./package.json');
// echo the package's name
console.log(pjson.name);