如何在webpack.config.js中使用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.config中使用ES6? 像这样的回购协议 是吗

例如:

用这个

从“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