我有一个带有两个应用程序的Angular CLI项目。这两个应用程序是相同的,但一个应用程序包含构建中的所有文件,另一个应用程序需要排除模块。
Angular CLI版本: 1.7.4 Angular版本: 5.2.10
我在angular-cli.json文件中添加了两个应用程序,每个应用程序都有一个单独的ts-config文件。
"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:
{
"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构建脚本:
"scripts": {
"build-app": "ng build -app app --prod",
"build-admin": "ng build -app admin --prod",
},为了测试这一点,我在admin模块中更改了一些文本和样式,并在本地运行了构建。我注意到管理版本的应用程序(它应该构建所有文件)可以工作,但应用程序的" app“版本并不排除管理模块。
有没有人在上面的代码片段中发现了遗漏/忽略的地方?有没有人遇到过类似的问题并找到了解决方案?
angular-cli repo解决了这个问题,但没有提供修复。see issue here
发布于 2018-05-15 01:40:26
如果有人正在阅读这篇文章并寻找答案:
TS将构建任何它看到'import‘语句的文件,而不管它是否在tsconfig.json中的'exclude’属性中。
我在app.modules.ts文件中有一个import语句,当我删除它时...它已成功地从生成中排除。
发布于 2018-11-09 00:57:11
在我的应用程序上,我有一个错误,因为我有两个模块,包括几个模块/服务……其中一个专门用于测试(使用HttpClientTestingModule而不是HttpClientModule)。由于它位于一个testing/index.ts文件中,因此在构建时会自动加载,因此会导致所有操作都失败。即使它只包含在需要它的*.spec.ts文件中。我尝试用src/tsconfig.app.json来排除它,它起作用了:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "es2015",
"types": []
},
"exclude": [
"test.ts",
"app/indalo-api/testing/*",
"**/*.spec.ts"
]
}因此,我推断Angular 6和更高版本将自动加载所有.ts文件,除非它们在排除中,但如果需要,它们将被未排除的文件加载。
这是有道理的。
https://stackoverflow.com/questions/50334825
复制相似问题