[英]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>
以及我的.babelrc
和package.json
文件,以備.babelrc
。
{
"presets": [
"@babel/preset-env"
]
}
我只是按照使用指南進行操作。 在這種情況下,不需要polyfill
和cli
。
{
"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.