tools.tsLoader

TIP

该配置由 Modern.js Builder 提供,更多信息可参考 tools.tsLoader

  • 类型: Object | Function | undefined
  • 默认值: undefined
  • 打包工具: 仅支持 webpack

项目中默认不开启 ts-loader,当 tools.tsLoader 不为 undefined 则表示开启 ts-loader,同时禁用 babel-loader 对 TypeScript 的编译。

Object 类型

当此值为 Object 类型时,与默认配置通过 Object.assign 合并。

默认配置如下:

{
  "compilerOptions": {
    "target": "es5",
    "module": "ESNext"
  },
  "transpileOnly": true,
  "allowTsInNodeModules": true
}

你可以通过 tools.tsLoader 配置项来覆盖默认配置:

export default {
  tools: {
    tsLoader: {
      allowTsInNodeModules: false,
    },
  },
};

Function 类型

当此值为 Function 类型时,默认配置作为第一参数传入,可以直接修改配置对象,也可以返回一个对象作为最终配置;第二个参数为修改 ts-loader 配置工具函数集合:

export default {
  tools: {
    tsLoader: opts => {
      opts.allowTsInNodeModules = false;
    },
  },
};

工具函数

tools.tsLoader 的值为 Function 类型时,第二个参数可用的工具函数如下:

addIncludes

  • 类型: (includes: string | RegExp | Array<string | RegExp>) => void

默认情况下只会编译 src 目录下的业务代码,使用 addIncludes 可以指定 ts-loader 编译 node_modules 下的一些文件。比如:

export default {
  tools: {
    tsLoader: (config, { addIncludes }) => {
      addIncludes([/node_modules\/react/]);
    },
  },
};

addExcludes

  • 类型: (excludes: string | RegExp | Array<string | RegExp>) => void

addIncludes 相反,指定 ts-loader 编译时排除某些文件。

例如不编译 src/example 目录下的文件:

export default {
  tools: {
    tsLoader: (config, { addExcludes }) => {
      addExcludes([/src\/example\//]);
    },
  },
};