如何在命令行中直接运行node/babel脚本?

joe*_*not 8 node.js npm npm-cli

我的package.json看起来像:

{
  "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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想运行的js脚本是app.js. 我无法使用节点app.js直接运行它,因为app.js包含新的语言语法.

因此,我必须按照上面定义的启动脚本,使用npm start通过babel运行它.没问题.

我的问题是如何直接在命令行中运行cmd,可以这样做吗?类似的东西:

npm run babel-node --presets env app.js

Rod*_*ata 14

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

编辑

根据OP的要求更新.


Mic*_*ole 13

伟大的古格利麻球!这比应该的要困难得多。

有关文档,请参见此处。TLDR;

Babel > 7.0 版必须进入你的package.json命令行才能运行。

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

npx babel-node --presets @babel/preset-env imports/test.js 
Run Code Online (Sandbox Code Playgroud)


小智 8

全局安装@babe/node-

npm i -g @babel/node
Run Code Online (Sandbox Code Playgroud)

然后 babel-node 命令在您的终端中可用。所以,你可以运行 -

babel-node --presets env app.js
Run Code Online (Sandbox Code Playgroud)

顺便说一句,它应该只在开发环境中使用,从不推荐用于生产,因为它不必要地繁重并占用大量内存。


Vik*_*nko 8

您可以使用执行npm软件包二进制文件npx

由于Babel 7始终会解析相对于本地项目文件夹的插件和预设,因此您将不得不在@babel/preset-env本地安装到项目中。

npm i -D @babel/preset-env
Run Code Online (Sandbox Code Playgroud)

之后,无需安装babel-node即可将其运行npx到项目中:

npx -p @babel/core -p @babel/node babel-node --presets @babel/preset-env app.js
Run Code Online (Sandbox Code Playgroud)

如果安装@babel/node到项目中,npx则将首选项目本地版本。


对于Babel 6,可以使用以下命令:

npx -p @babel/core -p @babel/node babel-node --presets @babel/preset-env app.js
Run Code Online (Sandbox Code Playgroud)