Nrwl Nx 构建节点项目仅转译 main.ts

Posted

技术标签:

【中文标题】Nrwl Nx 构建节点项目仅转译 main.ts【英文标题】:Nrwl Nx build node project only transpiles main.ts 【发布时间】:2021-01-24 01:14:23 【问题描述】:

我是 Nrwl 和 monorepos 的新手。我有一个节点应用程序,我正在尝试使用nx build [project-name] 构建它。我的节点应用程序在 main.ts 所在的 src 文件夹下的文件夹结构中有一些打字稿文件。当我运行nx build [project-name] 时,只有 main.ts 文件被转译为 out 目录中的 .js 文件。我今天一直在努力尝试不同的 tsconfig 变体,以使整个应用程序转译到 out 目录中,但无济于事。我不得不求助于使用tsc --project ./apps/[project-name]/tsconfig.app.json 来转译整个应用程序。是否有可能让 NX 转译整个节点项目?

这是我的项目 tsconfig:

//tsconfig.app.json

  "extends": "./tsconfig.json",
  "compilerOptions": 
    "outDir": "../../dist",
    "types": [
      "node"
    ]
  ,
  "exclude": [
    "**/*.spec.ts"
  ],
  "include": [
    "**/*.ts"
  ]


//tsconfig.base.json

  "compileOnSave": false,
  "compilerOptions": 
    "allowSyntheticDefaultImports": true,
    "rootDir": ".",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2017",
    "module": "commonjs",
    "esModuleInterop": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ],
    "skipLibCheck": true,
    "skipDefaultLibCheck": true,
    "baseUrl": ".",
    "paths": 
      "@work-orders/interfaces": [
        "libs/interfaces/src/index.ts"
      ],
      "@work-orders/domain": [
        "libs/work-orders-domain/src/index.ts"
      ]
    
  ,
  "exclude": [
    "node_modules",
    "tmp"
  ]

【问题讨论】:

【参考方案1】:

我刚刚遇到了同样的问题。看来您必须使用 @nrwl/workspace:run-commands 功能来调用 tsc --project ./apps/[project-name]/tsconfig.app.json

【讨论】:

以上是关于Nrwl Nx 构建节点项目仅转译 main.ts的主要内容,如果未能解决你的问题,请参考以下文章

Nrwl Nx build for production 缺少节点模块包

nrwl nx 角度构建 API 端点

如何强制 nrwl nx 尊重标签更新?

对象对象不是 PostCSS 插件 - 构建 nrwl 库项目时出错

为啥 nrwl/nx 比 angular@6 vanilia 更好?

在 Nrwl/Nx 工作区中包含一些库的包