Typescript:从生成的构建中排除目录,而不破坏现有模块别名

问题描述 投票:0回答:1

在 Node.JS 项目中,项目根目录中有两个目录包含 .ts 文件 -

src
test
。 src/index.js 导入 module-alias/register。每个被测试/导入模块别名/注册的文件。

这是我的 tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./dist",
    "strict": true,
    "strictNullChecks": true,
    "strictPropertyInitialization": false,
    "resolveJsonModule": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,

    "baseUrl": ".",
    "paths": {
      "@/*": [ "./src/*" ],
    }
  },

  "include": ["test/**/*", "src/**/*", "test"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

我的 package.json 中的节点级模块别名:

  "_moduleAliases": {
    "@": "./src"
  },

每当我执行

rm -rf dist && yarn tsc
操作时,都会创建
dist
目录,其中包含两个子目录 -
src
test
。我只想要编译后的 (.js)
src
内容,而不是 src 目录本身。至于test目录,我根本就不要了

typescript package.json tsconfig tsc
1个回答
0
投票

tsc
将发出文件,因为它们是从
tsc-config
的原点解析的(使用最长的公共路径)。所以您报告的文件结构似乎是正确的。如果您想改变这种行为,您可以使用
rootDir

如果您也正在设置

baseUrl
4.1
之后),则无需设置paths

如果您不想发出

test
,则不应将其包含在构建中。您包含的任何内容都将由
tsc
发出。或者,您可以进行不同的配置,一种用于开发,一种用于生产,并使用适合用例的配置。来看看
extends

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.