Angular 库中的路径
Paths in an Angular library
我看到一些地方说你可以在你的库中使用 tsconfig 路径。
我试图设置它,但我的项目无法编译。
我的服务的完整路径是 example-project/projects/example-project/src/lib/_core/services 所以我已将其添加到我的 tsconfig.ts 文件(在 foot 文件夹中):
"paths": {
"@core": ["src/app/_core"],
"@configs": ["src/app/_core/configs"],
"@models": ["src/app/_core/models"],
"@services": ["src/app/_core/services"],
"@validators": ["src/app/_core/validators"]
}
但是如果我尝试从我的库中引用服务,它不会编译:
这是完整的class:
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CloudinaryModule } from '@cloudinary/angular-5.x';
import * as Cloudinary from 'cloudinary-core';
import { IMAGES_CONFIG, ImagesConfig } from '@configs';
import { ResponsiveImageComponent } from './responsive-image.component';
@NgModule({
declarations: [ResponsiveImageComponent],
exports: [ResponsiveImageComponent, CloudinaryModule],
imports: [CommonModule, CloudinaryModule],
})
export class ImagesModule {
static forRoot(config: ImagesConfig): ModuleWithProviders {
return {
ngModule: ImagesModule,
providers: [
{ provide: IMAGES_CONFIG, useValue: config },
...CloudinaryModule.forRoot(Cloudinary, {
cloud_name: config.cloudName,
}).providers,
],
};
}
}
有人知道我做错了什么吗?
我想通了。两件事。
忘记在目录下添加index.ts文件,例如:
export * from './core-config.token';
export * from './core-config';
export * from './images-config.token';
export * from './images-config';
我通过查看带有路径的普通应用程序得到的第二件事。 baseUrl 在 tsconfig 设置为“./”所以路径必须从那里开始,所以我改变了我的 tsconfig到这个:
"paths": {
"@core": ["projects/example-project/src/app/_core"],
"@configs": ["projects/example-project/src/app/_core/configs"],
"@models": ["projects/example-project/src/app/_core/models"],
"@services": ["projects/example-project/src/app/_core/services"],
"@validators": [
"projects/example-project/src/app/_core/validators"
]
}
现在可以使用了。
我看到一些地方说你可以在你的库中使用 tsconfig 路径。 我试图设置它,但我的项目无法编译。 我的服务的完整路径是 example-project/projects/example-project/src/lib/_core/services 所以我已将其添加到我的 tsconfig.ts 文件(在 foot 文件夹中):
"paths": {
"@core": ["src/app/_core"],
"@configs": ["src/app/_core/configs"],
"@models": ["src/app/_core/models"],
"@services": ["src/app/_core/services"],
"@validators": ["src/app/_core/validators"]
}
但是如果我尝试从我的库中引用服务,它不会编译:
这是完整的class:
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CloudinaryModule } from '@cloudinary/angular-5.x';
import * as Cloudinary from 'cloudinary-core';
import { IMAGES_CONFIG, ImagesConfig } from '@configs';
import { ResponsiveImageComponent } from './responsive-image.component';
@NgModule({
declarations: [ResponsiveImageComponent],
exports: [ResponsiveImageComponent, CloudinaryModule],
imports: [CommonModule, CloudinaryModule],
})
export class ImagesModule {
static forRoot(config: ImagesConfig): ModuleWithProviders {
return {
ngModule: ImagesModule,
providers: [
{ provide: IMAGES_CONFIG, useValue: config },
...CloudinaryModule.forRoot(Cloudinary, {
cloud_name: config.cloudName,
}).providers,
],
};
}
}
有人知道我做错了什么吗?
我想通了。两件事。
忘记在目录下添加index.ts文件,例如:
export * from './core-config.token';
export * from './core-config';
export * from './images-config.token';
export * from './images-config';
我通过查看带有路径的普通应用程序得到的第二件事。 baseUrl 在 tsconfig 设置为“./”所以路径必须从那里开始,所以我改变了我的 tsconfig到这个:
"paths": {
"@core": ["projects/example-project/src/app/_core"],
"@configs": ["projects/example-project/src/app/_core/configs"],
"@models": ["projects/example-project/src/app/_core/models"],
"@services": ["projects/example-project/src/app/_core/services"],
"@validators": [
"projects/example-project/src/app/_core/validators"
]
}
现在可以使用了。