Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use variables in package.json?

Tags:

node.js

npm

There is a feature from maven I miss a lot in package.json. In maven .pom file you can define variables in parent project and use them in child project's pom files.

Is there something like this in npm? We are building modular project and I want to define dependency versions centrally and them to be used in respective package.json files.

Thanks

like image 410
husayt Avatar asked Apr 30 '17 10:04

husayt


People also ask

Can I use variable in package json?

To use variable, you need to declare a section named config (or something else, but not a name was already taken by the package. json ).

Can you manually edit package json?

You can add dependencies to a package. json file from the command line or by manually editing the package.

How do I run a script in a package json?

json file: To execute your Script, use the 'npm run <NAME-OF-YOUR-SCRIPT>' command. Some predefined aliases convert to npm run, like npm test or npm start, you can use them interchangeably.


2 Answers

Any property from package.json can be referenced from scripts, prefix it with $npm_package and adding an _<prop> (underscore + property) for every nested level.

Example:

{    "name": "appname",   "version": "0.0.1" } 

Here, name can be access like below:

Linux/Mac: $npm_package_name or ${npm_package_name}

Windows: %npm_package_name%


And, version can be access like below:

Linux/Mac: $npm_package_version or ${npm_package_version}

Windows: %npm_package_version%

like image 61
Abhay Avatar answered Sep 22 '22 19:09

Abhay


Define a config object in package.json:

{     "name"   : "myapp",     "config" : { "port" : "3000" },     ... } 

And then you can access port value from scrips object with $npm_package_config_port

{     "name"   : "myapp",     "config" : { "port" : "3000" },     "scripts": {         "start" : "node --harmony app.js $npm_package_config_port"     },     ... } 

The source full article is here:

http://www.marcusoft.net/2015/08/npm-scripting-configs-and-arguments.html#npm-configuration

like image 43
Jirik Avatar answered Sep 23 '22 19:09

Jirik