[英]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.