繁体   English   中英

Babel JS —只需将JavaScript STRING转换为es5(使用nodejs)

[英]Babel JS — simply convert JavaScript STRING to es5 (USING nodejs)

我一直在搜寻很多东西,发现很多半答案或答案都不能解决我的问题,因此:

我只是想获取一个输入字符串 ,该字符串是常规源JavaScript代码(不是nodejs,仅是常规JavaScript),然后将其转换为包含浏览器兼容JavaScript(es5或其他)的另一个STRING( 不是文件 )。

我不是要以es5的身份运行nodejs,也不是要转换单个文件,而是要获取一串新的JavaScript并获取一串旧的JavaScript。

现在,使用BabelJS docs ,它说要这样做:

babel.transform(code, options, function(err, result) {
  result; // => { code, map, ast }
});

在制作一个带有.babelrc文件的文件(并在npm中安装@ babel / preset-env --save-dev)之后:

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

但是在文档中并没有说什么“选项”应该仅仅是为了使其工作

这里的许多其他帖子说包括npm install babel-preset-es2015

module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader?presets[]=es2015'
      }
    ]
  }

但是我认为这是针对不再可用的旧版本

这个著名的答案给出了解决方案:

 npm install babel-preset-env 

并运行

 babel --presets env proxy.js --out-file proxified.js 

或创建一个包含以下内容的.babelrc文件

 { "presets": [ "env" ] } 

并像以前一样运行它。

在这种情况下,env是一个预设,它基本上说是将所有标准ES *行为编译为ES5。 如果您使用的是支持某些ES6的Node版本,则可能需要考虑

 { "presets": [ ["env", { "targets": { "node": "true" } }], ] } 

但这只是创建一个新的javascript文件,我只是想从另一个字符串中创建一个字符串。

我认为我需要使用Babel 7,因为这是最新版本,但是我不断收到各种控制台错误。

可有人只为让巴贝尔(优选7),以新的JavaScript 字符串转换为旧一个简单的一步一步的过程?

我不确定这是否是您所期望的。

我有这个简单的项目结构:

-- package.json
-- index.js
-- .babelrc

index.js

let babel = require('@babel/core')

// some es6 code
let code = `
    let a = () => { console.log('hello') }
`
babel.transform(
    code,
    {
        babelrc: true,
        filename: '.babelrc'
    },
    function(err, result) {
        console.log(result.code)
    }
)

这是控制台输出:

D:\Documents\code\test>node index.js
"use strict";

var a = function a() {
  console.log('hello');
};

D:\Documents\code\test>

以及我的.babelrcpackage.json文件,以备.babelrc

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

我只是按照使用指南进行操作。 在这种情况下,不需要polyfillcli

{
  "name": "test",
  "version": "1.0.0",
  "dependencies": {
    "@babel/polyfill": "^7.2.5"
  },
  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.3.4",
    "@babel/preset-env": "^7.3.4"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM