将打字稿项目编译为本地模块
Compile typescript project as local module
tl;博士
我可以让 typescript 将不同的文件夹编译为单独的库,然后像节点模块一样导入结果吗?
例如,我有一个包含 800 个文件的 common
文件夹,然后是几个 app
文件夹(app1
、app2
等),每个文件夹包含 20+ /- 文件。所有 app
文件夹都引用了 common
文件夹内的 classes/interfaces/etc。问题是,每当我编译一个 app
文件夹时,它也会编译所有 800 个 common
文件。这个编译时间太长了,我真的很想避免它。
我已经在 common
和 app1
中使用 tsc --diagnostics --listFiles
测试并确认了这一点。
我试过在tsconfig.json
中使用exclude
属性来忽略common
文件夹,但是好像没有效果。我也在compilerSettings
中尝试了baseDir
、paths
等多种配置,但都无济于事。
noResolve
似乎几乎达到了我的要求,但是这样安全吗??
有没有办法将它们分开编译,避免一直重新编译独立的common
项目?
技术堆栈:
- Angular 2.0.1
- SystemJS 0.19.39
- 打字稿 2.0.3
- Windows 8.1
- ASP.NET MVC6
将您的公共文件夹分离到不同的项目调用 common
,并使其成为 node.js 模块,此处说明:
https://docs.npmjs.com/getting-started/creating-node-modules
然后在您的原始项目中,您执行以下操作:
方法一
npm link <folder path of common>
方法二
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作为例子。
tl;博士
我可以让 typescript 将不同的文件夹编译为单独的库,然后像节点模块一样导入结果吗?
例如,我有一个包含 800 个文件的 common
文件夹,然后是几个 app
文件夹(app1
、app2
等),每个文件夹包含 20+ /- 文件。所有 app
文件夹都引用了 common
文件夹内的 classes/interfaces/etc。问题是,每当我编译一个 app
文件夹时,它也会编译所有 800 个 common
文件。这个编译时间太长了,我真的很想避免它。
我已经在 common
和 app1
中使用 tsc --diagnostics --listFiles
测试并确认了这一点。
我试过在tsconfig.json
中使用exclude
属性来忽略common
文件夹,但是好像没有效果。我也在compilerSettings
中尝试了baseDir
、paths
等多种配置,但都无济于事。
noResolve
似乎几乎达到了我的要求,但是这样安全吗??
有没有办法将它们分开编译,避免一直重新编译独立的common
项目?
技术堆栈:
- Angular 2.0.1
- SystemJS 0.19.39
- 打字稿 2.0.3
- Windows 8.1
- ASP.NET MVC6
将您的公共文件夹分离到不同的项目调用 common
,并使其成为 node.js 模块,此处说明:
https://docs.npmjs.com/getting-started/creating-node-modules
然后在您的原始项目中,您执行以下操作:
方法一
npm link <folder path of common>
方法二
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作为例子。