首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Angular CLI中的ng-build中排除模块...不工作

从Angular CLI中的ng-build中排除模块...不工作
EN

Stack Overflow用户
提问于 2018-05-15 00:16:22
回答 2查看 11.1K关注 0票数 8

我有一个带有两个应用程序的Angular CLI项目。这两个应用程序是相同的,但一个应用程序包含构建中的所有文件,另一个应用程序需要排除模块。

Angular CLI版本: 1.7.4 Angular版本: 5.2.10

我在angular-cli.json文件中添加了两个应用程序,每个应用程序都有一个单独的ts-config文件。

代码语言:javascript
复制
  "apps": [
    {
      "name": "app",   <---- first app
      "root": "src",
      "outDir": "/wwwroot",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",       <----first TS config
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "styles.scss"
      ],
      "scripts": [],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    },
    {
      "name": "admin",   <---- second app
      "root": "src",
      "outDir": "/wwwroot",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.admin.json", <----- second ts config
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "styles.scss"
      ],
      "scripts": [],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],

“管理”应用程序将包括所有文件。但是,应用程序数组中的第一个应用程序" app“将排除管理模块。

tsconfig.app.json:

代码语言:javascript
复制
{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "es2015",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "app/modules/admin/"    <----- note: I want this entire directory excluded from the build. 
  ]
}

我在package.json文件中设置了两个"ng-build“脚本。

package.json构建脚本:

代码语言:javascript
复制
"scripts": {
    "build-app": "ng build -app app --prod",
    "build-admin": "ng build -app admin  --prod",
  },

为了测试这一点,我在admin模块中更改了一些文本和样式,并在本地运行了构建。我注意到管理版本的应用程序(它应该构建所有文件)可以工作,但应用程序的" app“版本并不排除管理模块。

有没有人在上面的代码片段中发现了遗漏/忽略的地方?有没有人遇到过类似的问题并找到了解决方案?

angular-cli repo解决了这个问题,但没有提供修复。see issue here

EN

回答 2

Stack Overflow用户

发布于 2018-05-15 01:40:26

如果有人正在阅读这篇文章并寻找答案:

TS将构建任何它看到'import‘语句的文件,而不管它是否在tsconfig.json中的'exclude’属性中。

我在app.modules.ts文件中有一个import语句,当我删除它时...它已成功地从生成中排除。

票数 11
EN

Stack Overflow用户

发布于 2018-11-09 00:57:11

在我的应用程序上,我有一个错误,因为我有两个模块,包括几个模块/服务……其中一个专门用于测试(使用HttpClientTestingModule而不是HttpClientModule)。由于它位于一个testing/index.ts文件中,因此在构建时会自动加载,因此会导致所有操作都失败。即使它只包含在需要它的*.spec.ts文件中。我尝试用src/tsconfig.app.json来排除它,它起作用了:

代码语言:javascript
复制
{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "es2015",
    "types": []
  },
  "exclude": [
    "test.ts",
    "app/indalo-api/testing/*",
    "**/*.spec.ts"
  ]
}

因此,我推断Angular 6和更高版本将自动加载所有.ts文件,除非它们在排除中,但如果需要,它们将被未排除的文件加载。

这是有道理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50334825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档