My package.json looks like:
{
"name": "99-nodetest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "babel-node --presets env app.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"babel-cli": "^6.26.0",
"babel-preset-env": "latest"
}
}
The js script i want to run is app.js. I cannot run it directly using node app.js because app.js contains new language syntax.
Thus i have to run it through babel, using npm start, as per the start script defined above. No issues here.
My question is how to run the cmd directly in the command line, can it be done? something similar to:
npm run babel-node --presets env app.js
node ./node_modules/babel-cli/bin/babel-node.js --presets env app.js
EDIT
Updated as requested by OP.
Great gugley mugleys! This was way harder than it should have been.
See here for docs. TLDR;
Babel > version 7.0 has to go in your
package.json
to run from command line.You can run the
app.js
file fromnode
by telling it aboutbabel-node
first:node ./node_modules/.bin/babel-node app.js
with the following
.babelrc
file at the root project{"presets": ["@babel/preset-env"]}
You can execute npm package binaries with
npx
.Because Babel 7 always resolves plugins and presets relative to local project folder, you will have to install
@babel/preset-env
locally into the project.After that the
babel-node
can be run withnpx
without installation into the project:If you install
@babel/node
into the project,npx
will prefer project-local version.In case of Babel 6 the command below can be used:
Babel node has a
bin
registered so an executable is generated on install inside thenode_modules/.bin
directory.You may run it simply by typing.
Which accomplishes the same thing as the longer
node
or the alternatenpx
versions.Install @babe/node globally-
then babel-node command becomes available in your terminal. So, you can run -
Btw, it should be used in dev environment only, never recommended for production as it's unnecessarily heavy with high memory usage.