我的一个TypeScript项目面临两个问题。
假设我想
仅接口
名为的TypeScript项目
myproject-api
. 我打算在两个名为
myproject-impl1
和
myroject-impl2
. 我在用
Lerna
将这些项目作为名为的根项目中的模块进行管理
myproject
,他们都是
bootstrapped
根据需要(
npm link
). 我也在使用
gulp
要传输TypeScript源代码,目前的配置非常简单。
第1版。
即使有
"types": "dist/main.d.ts"
或
"types": "src/index.ts"
在里面
package.json
,实现模块无法查看中的类型定义
myproject api
. 我也试着搬家
myproject-api/src/index.ts
到
myproject-api/index.ts
,无济于事。编译器只是在消息中失败了
Cannot find module 'myproject-api'.
第2版。
TypeScript似乎不会生成
.d.ts
如果在
.ts
源文件,
除非
我用
tsc -d --outFile dist/main.js
. 换句话说,出于某种原因,如果我使用
tsconfig.json
配置(例如。
tsc --project tsconfig.json
)the
.js
生成文件,但不生成
.d、 ts
文件夹。
附笔。:
我开始这个项目只是为了充实和完善我心中的一些想法。如果有人对这种项目布局有更好的设置,请告诉我。
更多信息。。。
我正在使用ES6导入
.ts
项目。
这是我的文件夹布局:
.
âââ lerna.json
âââ package.json
âââ packages
â âââ myproject-api
â | âââ dist
â â âââ gulpfile.js
â â âââ package.json
â â âââ src
â â â âââ index.ts
â â âââ tsconfig.json
â âââ myproject-impl*
â âââ dist
â âââ gulpfile.js
â âââ package.json
â âââ src
â â âââ index.ts
â âââ tsconfig.json
âââ README.md
packages/myproject-api/src/someClass.ts
:
export interface ISomeClass { /* ... */ }
packages/myproject-api/src/index.ts
:
export * from "./someClass.ts"
// (repeating this kind of export for all inner modules)
packages/myproject-impl*/src/index.ts
:
import { ISomeClass } from "myproject-api"
// ...
吞咽配置:
var gulp = require("gulp");
var ts = require("gulp-typescript");
var tsProject = ts.createProject("tsconfig.json");
gulp.task("default", ["build"]);
gulp.task("build", function () {
return tsProject.src()
.pipe(tsProject())
.js.pipe(gulp.dest("."));
});
这是
t配置。json
对于所有项目:
{
"compilerOptions": {
"target": "es6",
"module": "amd",
"strict": true,
"baseUrl": ".",
"outFile": "dist/main.js",
"declaration": true,
"lib": [
"es5",
"es2015.promise",
"es2015.iterable"
]
},
"exclude": [
"node_modules",
"dist"
]
}
系统信息:
[flisboac@sonic ~]$ tsc --version
Version 2.6.2
[flisboac@sonic ~]$ node --version
v9.3.0
[flisboac@sonic ~]$ lerna --version
2.5.1
[flisboac@sonic ~]$ gulp --version
[03:39:24] CLI version 2.0.0
[flisboac@sonic ~]$ npm --version
5.6.0
[flisboac@sonic ~]$ uname -a
Linux sonic 4.14.6-1-ARCH #1 SMP PREEMPT Thu Dec 14 21:26:16 UTC 2017 x86_64 GNU/Linux
[flisboac@sonic ~]$ lsb_release -a
LSB Version: 1.4
Distributor ID: Arch
Description: Arch Linux
Release: rolling
Codename: n/a