将typescript项目编译为本地模块

时间:2016-10-04 18:06:43

标签: angular typescript tsc

TL;博士

我可以将打字稿编译为不同的文件夹,并将结果导入节点模块吗?

例如,我有一个包含800个文件的common文件夹,然后是一些app个文件夹(app1app2等),每个文件夹都有20 +/-文件。所有app个文件夹都引用了common文件夹中的类/接口/等。问题是每当我编译app文件夹时,它也会编译所有800个common文件。这个编译花了太长时间,我真的想避免它。

我已使用tsc --diagnostics --listFilescommon中的app1对此进行了测试和确认。

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

noResolve似乎几乎达到我要求的目的,但这样安全吗?

有没有办法单独编译它们并避免一直重新编译独立的common项目?

Tech Stack:

  • Angular 2.0.1
  • SystemJS 0.19.39
  • Typescript 2.0.3
  • Windows 8.1
  • ASP.NET MVC6

1 个答案:

答案 0 :(得分: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作为示例。