typescript - 将TypeScript编译成outDir时外部组件模板或css的路径

标签 typescript angular angular2-components

当我编写 Angular 2 应用程序代码时,我的 tsconfig.json 文件包含以下参数:

"outDir": "dist"

意味着 TypeScript 到 JavaScript 的编译会将生成的文件存储在 dist 文件夹中。

我的问题是,当我尝试使用具有外部模板或 CSS 文件的组件时, 使用 component-relative paths ,像这样:

@Component({
  moduleId: module.id,
  selector: 'my-cmp',
  templateUrl: 'my.component.html',
  styleUrls:  ['my.component.css']
})
export class MyComponent { }

浏览器尝试从转译后的 JavaScript 文件所在的同一文件夹中加载 .html.css 文件 - 在 dist 下.但是这些文件只存在于原始文件夹中(原始 TypeScript 文件所在的位置)。

如何解决?

注意:如果我删除 moduleId: module.id 并使用绝对路径,例如app/my-cmp/my.component.html,但这不是我想要的。 ;-)

最佳答案

由于您希望 JavaScript 输出到 dist 文件夹,假设要分发,那么您可以创建一个脚本,将 html 和 css 复制到 dist 文件夹,如下所示出色地。通常,您可以对这些文件进行某种缩小,从而使这样做更有值(value)。

另一种方法是通过根目录相对引用这些路径。因此,例如,如果您有一个文件 /someDir/myfile.ts/someDir/my.component.html 那么您可以引用 my.component.html 通过执行 ../someDir/my.component.html。如果 /someDir/myfile.ts 转到 /dist/myfile.js,这将起作用。这样做的缺点是,一旦您的项目增长,这样做可能会很烦人,因此我不推荐这样做。

关于typescript - 将TypeScript编译成outDir时外部组件模板或css的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37813809/

相关文章:

node.js - 没有为使用 nyc 的 vscode 扩展生成覆盖信息

angular - 如何在订阅期间检查 Angular 5 RxJS Observable 的 NULL 结果?

javascript - 重绘事件网格

javascript - angular 2模型驱动的嵌套表单组件

javascript - Angular 2 : insert component into a certain position

angular - 转换为 Observable 的 BahaviorSubject 不被识别

Angular 8发出多个http请求并合并所有结果

angular - RxJS 使用异步管道成功处理

Angular 6 : image from assets not working in inline style

css - Amcharts:如何在 valueAxis svg 元素中应用变换