如何在webpack.config.js中使用ES6?
如何在webpack.config中使用ES6? 像这样的回购协议 是吗 例如: 用这个如何在webpack.config.js中使用ES6?,webpack,Webpack,如何在webpack.config中使用ES6? 像这样的回购协议 是吗 例如: 用这个 从“webpack”导入webpack; 而不是 var webpack=require('webpack'); 这是一种好奇,而不是一种需要。尝试将您的配置命名为webpack.config.babel.js。你应该把它包括在项目中。例如 Webpack依赖于内部实现此功能。作为@bebraw建议的替代方案,您可以使用ES6+语法创建JavaScript自动化脚本: //工具/bundle.js 从“
从“webpack”导入webpack;
而不是
var webpack=require('webpack');
这是一种好奇,而不是一种需要。尝试将您的配置命名为
webpack.config.babel.js
。你应该把它包括在项目中。例如
Webpack依赖于内部实现此功能。作为@bebraw建议的替代方案,您可以使用ES6+语法创建JavaScript自动化脚本:
//工具/bundle.js
从“网页包”导入网页包;
从“./webpack.config.js”导入webpackConfig;// 另一种方法是使用如下npm脚本:“webpack”:“babel节点/node\u模块/webpack/bin/webpack”
,并按如下方式运行:npm run webpack
另一种方法是对节点使用require参数:
node-r巴别塔寄存器。/node\u模块/webpack/bin/webpack
在中找到这种方法,请查看build main
和build renderer
脚本。这确实很简单,但从任何答案中我都看不清楚,因此如果其他人像我一样感到困惑:
只需将.babel
附加到扩展名之前的文件名部分(假设您已作为依赖项安装了babel register
)
例如:
mv webpack.config.js webpack.config.babel.js
我与npm脚本一起使用的最佳方法是
node -r babel-register ./node_modules/webpack/bin/webpack
并根据您对的要求配置其余脚本。我在使用Webpack 2运行@Juho的解决方案时遇到问题。建议您打开babel模块解析:
需要注意的是,您需要告诉巴贝尔不要解析
这些模块符号使Web包可以使用它们。你可以这样做
在.babelrc或babel加载程序选项中设置以下内容
.LRC:
不幸的是,这与自动巴别塔注册功能相冲突。移除
{ "modules": false }
通过babel配置,一切又开始运行了。然而,这将导致破坏树木摇晃,因此完整的解决方案包括:
编辑,2017年11月13日;将网页包配置代码片段更新为网页包3(感谢@x-yuri)。旧版,网页包2代码段:
{
test: /\.js$/,
exclude: ['node_modules'],
loader: 'babel',
query: {
babelrc: false,
presets: [
['es2015', { modules: false }],
],
},
},
将webpack.config.js
重命名为webpack.config.babel.js
然后在.babelrc:{“预设”:[“es2015”]}
但是,如果要为babel cli使用不同的babel配置,则.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}
会破坏网页
有关.babelrc的更多信息,请查看。没有足够的代表发表评论,但我想为任何TypeScript用户添加一个类似于上述@Sandrik的解决方案
我使用两个脚本指向包含ES6语法的webpack配置(JS文件)
“启动开发”:“/node\u modules/.bin/ts node./node\u modules/webpack dev server/bin/webpack-dev-server.js--config./webpack/webpack.config.dev.js”
及
“build”:“/node\u modules/.bin/ts node./node\u modules/webpack/bin/webpack.js--config webpack/webpack.config.js”
这就是我使用webpack 4的原因:
在package.json
中:
"scripts": {
"dev": "cross-env APP_ENV=dev webpack-serve --require @babel/register"
},
"devDependencies": {
"@babel/core": "^7.0.0-rc.1",
"@babel/register": "^7.0.0-rc.1",
"@babel/preset-env": "^7.0.0-rc.1",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2"
},
"babel": {
"presets": [
["@babel/preset-env", {
"targets": {
"node": "current"
}
}]
],
"plugins": [
"transform-es2015-modules-commonjs"
]
}
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --open"
},
您可以清楚地看到每个依赖项是如何使用的,所以这里没有什么意外
注意:我正在使用,但是如果您想改用webpack
命令,请将其替换为webpack--config register
。在任何一种情况下,都需要@babel/register
来实现这一点
就这样
纱线开发
您可以在配置中使用es6
对于webpack dev server
,使用与webpack
命令相同的--config register
选项
注:
无需将配置文件重命名为webpack.config.babel.js
(如公认答案所示)webpack.config.js
将很好地工作。在大量文档之后
只需安装es2015预设(不是env!!!)并将其添加到
.babelrc:
{
"presets": [
["es2015", { "modules": false }]
]
}
将webpack.config.js
重命名为webpack.config.babel.js
巴别塔7和网页4的配置
package.json
B.法律改革委员会
webpack.config.babel.js
对于类型脚本:直接从
然后继续写你的,例如:
webpack.config.ts
import path from 'path';
import webpack from 'webpack';
const config: webpack.Configuration = {
mode: 'production',
entry: './foo.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'foo.bundle.js'
}
};
export default config;
查看链接了解更多详细信息,如果您不是针对commonjs(这是一个要求,因为它依赖于ts节点),您可以使用插件为webpack配置单独创建一个tsconfig文件。使用webpack 4和Babel 7
要设置网页包配置文件以使用ES2015,需要Babel:
安装开发人员依赖项:
npm i-D网页\
网页包cli\
网页包开发服务器\
@巴别塔/核心\
@巴别塔/寄存器\
@巴别塔/预设环境
npm i-D html网页包插件
创建.babelrc
文件:
{
"presets": ["@babel/preset-env"]
}
创建您的网页包配置,webpack.config.babel.js
:
从“路径”导入{resolve as_resolve};
从“html网页包插件”导入HtmlWebpackPlugin;
常量配置={
模式:"发展",,
开发服务器:{
contentBase:“./dist”
},
插件:[
新HtmlWebpackPlugin({
文件名:“index.html”,
模板:“src/index.html”
})
],
决心:{
模块:[[u解析([u目录名,'./src'),“节点模块”]
}
};
导出默认配置;
在package.json中创建脚本:
"scripts": {
"dev": "cross-env APP_ENV=dev webpack-serve --require @babel/register"
},
"devDependencies": {
"@babel/core": "^7.0.0-rc.1",
"@babel/register": "^7.0.0-rc.1",
"@babel/preset-env": "^7.0.0-rc.1",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2"
},
"babel": {
"presets": [
["@babel/preset-env", {
"targets": {
"node": "current"
}
}]
],
"plugins": [
"transform-es2015-modules-commonjs"
]
}
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --open"
},
运行npm运行构建
和npm启动
webpack配置基于具有以下目录结构的示例项目:
├── 自述文件
├── package-lock.json
├?
import webpack from 'webpack';
import { resolve } from 'path';
import { getIfUtils, removeEmpty } from 'webpack-config-utils';
export default env => {
const { ifProd, ifNotProd } = getIfUtils(env);
return {
mode: ifProd('production', 'development'),
devtool: ifNotProd('cheap-module-source-map'),
output: {
path: resolve(__dirname, ifProd('prod', 'dev')),
filename: 'bundle.js'
},
npm install --save-dev typescript ts-node @types/node @types/webpack
# and, if using webpack-dev-server
npm install --save-dev @types/webpack-dev-server
import path from 'path';
import webpack from 'webpack';
const config: webpack.Configuration = {
mode: 'production',
entry: './foo.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'foo.bundle.js'
}
};
export default config;
{
"presets": ["@babel/preset-env"]
}
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --open"
},
module:{
rules:[
{
test: /\.js$/,
loader: 'babel-loader'
}
]
}
{
"presets": ["@babel/env", "@babel/react"],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
]
]
}
npm install @babel/core --save-dev
npm install @babel/preset-env --save-dev
npm install @babel/preset-react --save-dev
npm install @babel/plugin-proposal-class-properties --save-dev
npm install babel-loader --save-dev