簡體   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