美文网首页
【译】如何在用 Babel 设置 Webpack

【译】如何在用 Babel 设置 Webpack

作者: 小黄人get徐先生 | 来源:发表于2019-08-08 22:39 被阅读0次

    Babel 可以让用户编写浏览器还不支持的 JavaScript 特性代码。也许你已经听说过 JavaScript ES6(ES2015)ES7和其他版本的ECMAScript规范,他们都是JavaScript语言的最新版本。在阅读本文时,JavaScript可能已经包含了这些版本。

    通过使用 Babel ,还不支持的代码被转换为普通的JavaScript,这样每个环境(例如:浏览器)都可以支持它。为了让Babel运行,你需要在命令行上安装它的两个主要依赖项:

    npm install --save-dev @babel/core @babel/preset-env
    

    此外,如果你有 Webpack 在适当的位置打包你的JavaScript应用程序,你需要为Babel安装一个 Webpack Loader

    现在,所有的库(node packages)都准备好了,你需要调整你的package.jsonwebpack.config.js(如果必要的话)来响应Babel的变更。这些变更将包括你以前安装的所有包。首先,在package.json里,包含Babel的预设:

    {
      ...
      "babel": {
        "presets": [
          "@babel/preset-env"
        ]
      },
      ...
    }
    

    @babel/preset-evn是一个智能预置,允许你使用最新的JavaScript,而不要去微管理什么样的环境使用什么样的语法转化。这不仅使你更加轻松并且JavaScript 包也更小。”

    其次,你的webpack.config.js文件也需要在其构建过程中包含Babel。在这儿,使用之前安装的Babel加载器。你需要告诉Webpack在哪些文件上使用加载器(例如:.js文件)以及可选地从进程中排除哪些文件夹(例如:node_modules):

    module.exports = {
      entry: './src/index.js',
      module: {
        rules: [
          {
            test: /\.(js)$/,
            exclude: /node_modules/,
            use: ['babel-loader']
          }
        ]
      },
      resolve: {
        extensions: ['*', '.js']
      },
      output: {
        path: __dirname + '/dist',
        publicPath: '/',
        filename: 'bundle.js'
      },
      devServer: {
        contentBase: './dist'
      }
    };
    

    你可以重新启动应用程序。除了现在可以为JavaScript使用即将到来的ECMAScript特性外,不应该做任何更改。一个可选的步骤是将您的Babel配置提取到一个单独的.babelrc配置文件中。您可以在命令行上的项目根目录中创建这个文件:

    touch .babelrc
    

    然后,添加Babel的配置 - 你之前已经在package.json里面添加了 - 现在放到.babelrc中,不要忘记删除package.json里的配置。它应该只配置一次。

    {
      "presets": [
        "@babel/preset-env"
      ]
    }
    

    Babel允许您在浏览器中使用将来的JavaScript特性,因为它将其转换为普通的JavaScript。你可以自己安装第一个插件试试。确保JavaScript特性一开始在src/index.js文件中不起作用,但是一旦为该特性安装了插件并将其集成到.babelrc文件中,就应该可以运行JavaScript源代码了。

    相关文章

      网友评论

          本文标题:【译】如何在用 Babel 设置 Webpack

          本文链接:https://www.haomeiwen.com/subject/qdafjctx.html