Problem
NPM $npm_package_main variable is always empty.
- When I set the package.json file with
"main": "index.js" - Set the "start" property from scripts to
"start": "node $npm_package_main" - Then run
npm start
Problem: the CLI executes the Node REPL mode, ignoring the "main" variable from package.json.
Expected behavior: execute the command as node index.js.
Environment
- Linux Ubuntu 20.04.1
npm -v= 7.3.0node -v= v15.5.0npm run env | grep npm_package_name=npm_package_name=appnpm run env | grep npm_package_main= EMPTY
How to reproduce
- Create an "app" directory and enter the new directory
- Create an "index.js" file with the following content
console.log('HELLO'); - Run
npm initand hit ENTER for all questions - Edit the
package.jsonfile and add the following line to the "scripts" property:"start": "node $npm_package_main", - now your package.json must look like this
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"devDependencies": {},
"scripts": {
"start": "node $npm_package_main",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
- Run "npm start"
- File "index.js" is not executed and Node enters the REPL mode.
Attempts
Set "start" and running "npm start" for:
- "echo $npm_package_main" prints nothing
- "echo $npm_package_name" prints "app"
- "echo $npm_package_version" prints "1.0.0"
References
- NPM package.json variables: https://docs.npmjs.com/cli/v7/using-npm/scripts
- NPM Github issue: https://github.com/npm/cli/issues/2585