我可以将打字稿编译为不同的文件夹,并将结果导入节点模块吗?
例如,我有一个包含800个文件的common
文件夹,然后是一些app
个文件夹(app1
,app2
等),每个文件夹都有20 +/-文件。所有app
个文件夹都引用了common
文件夹中的类/接口/等。问题是每当我编译app
文件夹时,它也会编译所有800个common
文件。这个编译花了太长时间,我真的想避免它。
我已使用tsc --diagnostics --listFiles
和common
中的app1
对此进行了测试和确认。
我尝试使用exclude
中的tsconfig.json
属性忽略common
文件夹,但似乎没有效果。我还在baseDir
内尝试了paths
,compilerSettings
等多种配置,但无济于事。
noResolve
似乎几乎达到我要求的目的,但这样安全吗?
有没有办法单独编译它们并避免一直重新编译独立的common
项目?
Tech Stack:
答案 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作为示例。