带有 Typescript 和 Babel 的 Webpack ES6 模块捆绑

Webpack ES6 Module Bundling w/ Typescript and Babel

我有一个简单的设置,我使用 webpack-stream 在 gulp 中使用 web pack。 我正在尝试将我的打字稿转换为 javascript 并使用 es6 模块将我的所有模块捆绑到一个文件中。

我的设置(我有一个 .babelrc 文件设置为 es2015):

  return gulp.src('./app/index.ts')
    .pipe(webpack({
      resolve: {
        extensions: ['', '.ts', '.js']
      },
      module: {
        loaders: [
          { test: /\.ts$/, exclude: /node_modules/, loader: 'ts-loader' },
          { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }
        ]
      },
      output: {
        filename: 'bundle.js'
      }
    }))
    .pipe(gulp.dest('./build));

此设置的结果只是为 index.ts 转换我的打字稿并将导入保存在文件中。我的配置有什么问题?

首先,确保您拥有所有 npm 依赖项:

"babel": "^6.5.2", "babel-preset-es2015": "^6.9.0", "babel-loader": "^6.2.5"

我相信您还需要指定要使用的预设,因此请从这里更新您的 babel 加载器:

{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }

对此:

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

解决了。加载程序的配置应如下所示:

loaders: [
  {
    loader: 'babel!ts',
    test: /\.ts$/,
    exclude: /node_modules/
  }
]

这确保了 babel 在 typescript 之前运行。