我怎样才能在webpack.config.js中使用ES6?

如何在webpack.config中使用ES6? 像这个回购https://github.com/kriasoft/react-starter-kit呢?

例如:

使用这个

import webpack from 'webpack'; 

代替

 var webpack = require('webpack'); 

这是一个好奇心,而不是一个需要。

尝试将您的configuration命名为webpack.config.babel.js 。 你应该有包含在项目中的babel-register 。 示例在react-router-bootstrap 。

Webpack依靠内部解释来完成这项工作。

作为@bebrawbuild议的替代scheme,您可以使用ES6 +语法创buildJavaScript自动化脚本:

 // tools/bundle.js import webpack from 'webpack'; import webpackConfig from './webpack.config.js'; // <-- Contains ES6+ const bundler = webpack(webpackConfig); bundler.run(...); 

并用babel执行它:

 $ babel-node tools/bundle 

PS :当你需要实现更复杂的构build步骤时,通过JavaScript API调用webpack可能是一个比通过命令行调用更好的方法。 例如,在服务器端软件包准备就绪后,启动Node.js应用程序服务器,在Node.js服务器启动之后,启动BrowserSync dev服务器。

也可以看看:

  • React入门套件 ( package.json/scriptstools/bundle.jstools/webpack.config.js
  • React静态Boilerplate ( run.jswebpack.config.jsnode run
  • 你可能不需要Gulp.js

另一种方法是使用如下的npm脚本: "webpack": "babel-node ./node_modules/webpack/bin/webpack" ,然后像这样npm run webpacknpm run webpack

这真的很容易,但是从任何答案来看我都不是很明显,所以如果有人像我一样困惑:

只要在扩展名之前添加.babel到文件名的部分 (假设你已经将babel-register安装为依赖项)。

例:

 mv webpack.config.js webpack.config.babel.js 

我有一个问题得到@ Juho的解决scheme与Webpack 2运行。Webpack迁移文档build议您转向babel模块parsing:

需要注意的是,你要告诉Babel不要分析这些模块符号,以便webpack可以使用它们。 您可以通过在.babelrc或者babel-loader选项中设置以下内容来完成此操作。

.babelrc:

 { "presets": [ ["es2015", { "modules": false }] ] } 

不幸的是,这与自动babel寄存器function冲突。 删除

 { "modules": false } 

从巴贝尔configuration得到的东西再次运行。 但是,这会导致破坏树状结构,因此完整的解决scheme将涉及覆盖加载器选项中的预设 :

 module: { rules: [ { test: /\.js$/, include: path.resolve('src'), loader: 'babel-loader', options: { babelrc: false, presets: [['env', {modules: false}]] } } ] } 

编辑 ,2017年11月13日; 更新的webpackconfiguration片段到Webpack 3(感谢@ x-yuri)。 旧的,Webpack 2片段:

 { test: /\.js$/, exclude: ['node_modules'], loader: 'babel', query: { babelrc: false, presets: [ ['es2015', { modules: false }], ], }, }, 

还有一种方法是对节点使用require参数:

node -r babel-register ./node_modules/webpack/bin/webpack

在电子反应模式中find了这种方式,查看build-mainbuild-renderer脚本。

webpack.config.js重命名为webpack.config.babel.js

然后在.babelrc中: {"presets": ["es2015"]} presets {"presets": ["es2015"]}

但是,如果你想为babel-cli使用不同的babelconfiguration,你的.babelrc可能看起来像这样:

 { "env": { "babel-cli": { "presets": [["es2015", {"modules": false}]] }, "production": { "presets": ["es2015"] }, "development": { "presets": ["es2015"] } } } 

在package.json中:

 { "scripts": { "babel": "BABEL_ENV='babel-cli' babel src -d dist/babel --source-maps", "build-dev": "NODE_ENV='development' webpack -d --progress --profile --colors", ... }, ... } 

这是愚蠢的,但{"modules": false}将打破webpack,如果你不使用不同的envs。

有关.babelrc的更多信息,请查看官方文档 。

我最好的方法与npm脚本一起

 node -r babel-register ./node_modules/webpack/bin/webpack 

并按照您对Babel的要求configuration其余的脚本

没有足够的代表评论,但我想添加任何TypeScript用户有一个类似的解决scheme,以上@Sandrik

我有两个指向包含ES6语法的webpackconfiguration(JS文件)的脚本。

"start-dev": "./node_modules/.bin/ts-node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./webpack/webpack.config.dev.js"

"build": "./node_modules/.bin/ts-node ./node_modules/webpack/bin/webpack.js --config webpack/webpack.config.js"