joedotnot
joedotnot

Reputation: 5153

how to run node / babel script directly in command line?

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

Upvotes: 20

Views: 45315

Answers (7)

alayor
alayor

Reputation: 5045

in babel 7 you can run this:

npx babel app.js

Upvotes: 2

Rodrigo Mata
Rodrigo Mata

Reputation: 1861

node ./node_modules/babel-cli/bin/babel-node.js --presets env app.js

Upvotes: 23

Christophe Gougeon
Christophe Gougeon

Reputation: 11

You can run the app.js file from node by telling it about babel-node first:

node ./node_modules/.bin/babel-node app.js

with the following .babelrc file at the root project

{"presets": ["@babel/preset-env"]}

Upvotes: -1

Viktor Vlasenko
Viktor Vlasenko

Reputation: 2532

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.

npm i -D @babel/preset-env

After that the babel-node can be run with npx without installation into the project:

npx -p @babel/core -p @babel/node babel-node --presets @babel/preset-env app.js

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:

npx babel-node --presets env app.js

Upvotes: 28

Michael Cole
Michael Cole

Reputation: 16257

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.

npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node 

npx babel-node --presets @babel/preset-env imports/test.js 

Upvotes: 14

Mat Lipe
Mat Lipe

Reputation: 815

Babel node has a bin registered so an executable is generated on install inside the node_modules/.bin directory.

You may run it simply by typing.

node_modules/.bin/babel-node --presets env app.js

Which accomplishes the same thing as the longer node or the alternate npx versions.

Upvotes: 2

Ashraful Alam
Ashraful Alam

Reputation: 380

Install @babe/node globally-

npm i -g @babel/node

then babel-node command becomes available in your terminal. So, you can run -

babel-node --presets env app.js

Btw, it should be used in dev environment only, never recommended for production as it's unnecessarily heavy with high memory usage.

Upvotes: 8

Related Questions