2016-10-04 42 views
1

TL;博士

我能有打字稿编译不同的文件夹作为单独的库,并导入结果就像一个节点模块?编译打字稿项目作为本地模块


例如,我有一个common文件夹800页的文件,然后几个app文件夹(app1app2等)各自具有20个+/-文件。所有app文件夹都引用common文件夹中的classes/interfaces/etc。问题是,每当我编译一个app文件夹时,它也编译所有800个common文件。这个汇编时间太长,我真的很想避免它。

我已经在commonapp1中使用tsc --diagnostics --listFiles进行了测试和确认。

我试过使用exclude属性tsconfig.json来忽略common文件夹,但它似乎没有效果。我也尝试了,pathscompilerSettings内的多种配置,但无济于事。

noResolve似乎几乎可以实现我在找的东西,但是安全吗?

有没有办法将它们分开编译并避免重新编译独立的common项目?


技术堆栈:

  • 角2.0.1
  • SystemJS 0.19.39
  • 打字稿2.0.3
  • 的Windows 8.1
  • ASP.NET MVC6

回答

1

独立您共同文件夹到一个不同的项目通话common,并使其成为一个Node.js的模块,指令位置:

https://docs.npmjs.com/getting-started/creating-node-modules

然后在你原来的项目,你就以下:

方法1

npm link <folder path of common> 

方法2

npm install <folder path of common> --save 

方法1更容易使用,因为更新到common会自动反映在主项目中,而不必担心更新。

如果您计划稍后将其作为独立npm软件包发布,方法2会很好。但是更新到common需要在主项目中手动更新步骤。

在您的common文件夹中,请确保您创建了.npmignore文件。让说你common项目具有以下结构:

.                                        
├── index.d.ts 
├── index.js                                      
├── lib/ <--- compiled location                                
├── node_modules                                     
├── package.json                                     
├── src/                                       
├── tsconfig.json                                    
├── typings                                      
└── typings.json 

那么你.npmignore应该看起来像以下:

.DS_Store 
.git 
.gitignore 
examples 
node_modules 
npm-debug.log 
src 
tsconfig.json 
typings 
typings.json 

您可以检查出我的ng2-simple-mq作为一个例子。

+0

我不知道这是否真的能解决我的问题。我可以把整件事情都捆绑起来,只是这样做效率低下。我想看看香草Typescript编译器是否可以将“项目”编译为本地模块。 – JimmyBoh

+0

@JimmyBoh其实有一个更简单的方法。 –

+0

@JimmyBoh已更新。 –