将 TypeScript 模块作为单独的 JavaScript 文件发出

Hri*_*dov 6 typescript webpack ts-loader

我正在创作一个库,我想同时提供一个包(所有文件都编译在一起)一个js文件夹,其中每个模块都单独发出,.d.ts旁边有它的文件。我的目标是允许:

  1. 使用单独的文件作为src文件夹中的TS 模块
  2. js不想编译 TypeScript 时,使用文件夹中的文件作为 JS 模块
  3. 当您根本不想编译任何东西时使用捆绑包

我正在使用ts-loader编译一堆带有以下webpack.config.js的 TypeScript 模块:

let path = require('path')

module.exports = {
  entry: {
    main: './src/index.ts'
  },
  output: {
    path: path.resolve(__dirname, 'js')
  },
  resolve: {
    extensions: ['.ts', '.js']
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        loader: 'ts-loader'
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

...以及以下tsconfig.json

{
  "compilerOptions": {
    "outDir": "js",
    "module": "commonjs",
    "target": "es5",
    "lib": [
      "es2015",
      "dom",
      "dom.iterable"
    ],
    "declaration": true,
    "strictBindCallApply": true,
    "downlevelIteration": true
  }
}
Run Code Online (Sandbox Code Playgroud)

使用此设置,运行webpack会生成一个包和.d.ts一个js文件夹中的所有文件,这是我想要的。我需要.ts将依赖关系图中的每个文件.d.ts作为.js文件发送到其文件旁边。本质上,我需要两个 Webpack 配置:

  • 一个在镜像的目录结构中发出.js.d.ts文件src
  • 另一个只发出一个包

在发布之前,我运行了这两种配置,并得到了我需要的一切。但是,我无法让ts-loader发出单独的.js文件。是否可以?