gpt4 book ai didi

javascript - webpack可以将js转成es6吗?

转载 作者:行者123 更新时间:2023-12-01 01:35:18 26 4
gpt4 key购买 nike

我使用 webpack 来捆绑我的 Node 应用程序。

我在 webpack 从 const 转换为 var 的包中看到了结果。这意味着 webpack 将我的文件转换为 es5。

如何告诉 webpack 转换为 es6? (保留 const 不变和/或使用 import 关键字)

app.js

import {test} from './some';

const x = 1;

console.log('test', test);
console.log('this should be const in the bundle, not var. ', x);

bundle 是:

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _some__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./some */ "./some.js");

var x = 1;
console.log('test', _some__WEBPACK_IMPORTED_MODULE_0__["test"]);
console.log('this should be const in the bundle, not var. ', x);

/***/ }),

我的 webpack 配置:

const path = require('path');

module.exports = () => [
{
mode: 'development',
entry: path.resolve(__dirname, './app.js'),
output: {
path: path.resolve(__dirname, './dist')
},
devtool: 'source-map',
target: 'node',
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
}
];

最佳答案

您正在使用 @babel/preset-env没有任何选择。这会将代码转换为 ES5,并且文档说实际上不建议以这种方式使用它。 “env”预设的全部要点是,您提供一个目标平台,它将自动应用该平台所需的转换。传递“targets.node”选项值 true 或“current”将转换当前使用的 Node 版本的代码。使用带有此选项的预设还有一个额外的优点,即升级 Node.js 不需要对 Babel 配置进行任何更改,并且如果新的 Node.js 支持更多所使用的 ES 功能,则转换的代码会更少。

node.js 中对 ECMAScript 模块的支持仍处于实验阶段,但您可以通过向“modules”选项传递 false 来禁用模块转换。

options: {
presets: [[
'@babel/preset-env',
{
targets: {
node: "current"
},
modules: false
}
]]
}

关于javascript - webpack可以将js转成es6吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com