我有以下内容package.json
:
{
"name": "browserify-test",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"scripts": {
"build:tsc": "tsc --outDir dist",
"build:browser": "browserify src/index.ts -p tsify --standalone MyLib > dist/myLib.js"
},
"devDependencies": {
"browserify": "^14.0.0",
"tsify": "^3.0.0",
"typescript": "^2.1.5"
}
}
以下tsconfig.json
:
{
"compilerOptions": {
"noImplicitAny": true,
"module": "commonjs",
"target": "ES5",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"declaration": true
}
}
文件src/evets.d.ts
:
export interface MyEvent {
name: string
}
最后入口点src/index.js
:
import * as events from './events';
export class MyLibrary {
public test(eventInstance: events.MyEvent) {
console.log(eventInstance);
console.log(events);
}
}
构建纯打字稿版本的作品。所以命令npm run build:tsc
完美运行,但尝试使用 browserify 构建,所以调用npm run build:browser
我得到以下错误:
> browserify-test@1.0.0 build /home/aszmyd/tmp/browserify-test
> browserify src/index.ts -p tsify --standalone MyLib > dist/myLib.js
Error: Cannot find module './events' from '/home/aszmyd/tmp/browserify-test/src'
似乎 browserify 无法正确使用带 d.ts
扩展名的类型定义文件。
上面的示例在两种情况下有效:
当
index.ts
我像这样导入时:(import * as events from './events.d;
注意结尾.d)当我删除该
console.log(events);
行(?!) - 它如何使用events.***
类型但不能使用整个集合(别名)?
我认为我在这里错过了一些愚蠢的东西,但我缺乏想法。