Angular 在NPM tsc编译器中指定模块位置

Angular 在NPM tsc编译器中指定模块位置,angular,typescript,tsc,Angular,Typescript,Tsc,上下文 我有一个Angular 2应用程序,出于组织目的,我想存储在三个不同的存储库中,例如,一个用于可重用的小部件,另一个用于只有特定用户才能看到的工作应用程序,另一个用于其他用户应该看到的应用程序,等等。我不希望在生产中将这些都缩小,因为这将涉及到向最终用户交付大量与他们无关的代码。相反,我希望每个应用程序都缩小,并且只在需要时由最终工作应用程序请求 问题 在代码中导入组件时,我显然需要指定组件名称,而不是绝对路径。例如: import { MyComponent } from '../..

上下文

我有一个Angular 2应用程序,出于组织目的,我想存储在三个不同的存储库中,例如,一个用于可重用的小部件,另一个用于只有特定用户才能看到的工作应用程序,另一个用于其他用户应该看到的应用程序,等等。我不希望在生产中将这些都缩小,因为这将涉及到向最终用户交付大量与他们无关的代码。相反,我希望每个应用程序都缩小,并且只在需要时由最终工作应用程序请求

问题

在代码中导入组件时,我显然需要指定组件名称,而不是绝对路径。例如:

import { MyComponent } from '../../other-repo/app/components/my.component/my.component';
在生产中必须有所不同,以参考回购所处的缩小文件。所以我希望能够使用模块路径,比如

import { MyComponent } from 'OtherRepo.myComponent';
尽可能靠近英雄教程设置,systemjs.config.js可以通过在其
map
属性中设置属性来查找
myComponent

var map = {
  'app':  'app', // 'dist',
  'OtherRepo.myComponent': '../../other-repo/app/components/my.component',
  ...
}
理论上,我可以使用Grunt、Gulp或类似的方法设置一个构建过程,将这个文件转换成一个模板,该模板包含不同的路径,这取决于它是开发还是产品构建

问题是NPM
tsc
编译器。当我已经运行应用程序并让它重新加载时,此配置工作正常。但是当我第一次开始运行应用程序时,运行NPM
tsc
编译器时,它抱怨找不到
myComponent
。我曾尝试将类似的内容添加到
tsconfig.json
文件中:

"paths": {
  "MyComponent": "../../other-repo/app/component/my-component"
}
编译器选项
块的内部和外部,但这不起作用。我也尝试过为属性命名
map
,但这也不起作用。不幸的是,让这项工作正常的唯一方法似乎是将
moduleResolution
属性更改为
classic
,而不是
node
,但这样我就无法从“@angular/core”导入{Component}”


有没有办法配置NPM的
tsc
编译器来允许我指定模块位置?

您使用的是哪一版本的TypeScript?1.8.10,根据
node\u modules/TypeScript/package.json
中的内容。我认为要使用多个repo,您需要有几个tsconfig.json文件。您应该研究一下:您使用的是哪个版本的TypeScript?1.8.10,根据
node\u modules/TypeScript/package.json
中的内容。我认为要使用多个repo,您需要有几个tsconfig.json文件。你应该研究一下: