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

时间:2019-03-21 09:22:18

标签: javascript node.js babeljs

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

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

我不是要以es5的身份运行nodejs,也不是要转换单个文件,而是要使用更新的JavaScript的 string 并获取 string < / strong>较旧的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'
      }
    ]
  }

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

this famous answer给出了解决方案:

npm install babel-preset-env
     

然后运行

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

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

{
    "presets": [
        "env"
    ]
}
     

像以前一样运行它。

     

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

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

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

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

有人能提供一个简单的逐步过程来使babel(最好是7)将较新的JavaScript的 string 转换为较旧的 string 吗? / p>

1 个答案:

答案 0 :(得分:1)

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

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

-- 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文件,以备您感兴趣。

{
    "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"
  }
}