让我们玩2个项目:主项目和 lib-project 它们都是用typescript编写的,然后使用 gulp 编译常见的javascript 我们的目标是在 main-project 中要求 lib-project 。
LIB-项目
>
我们已经创建了那些从他们的ts编译它们的js;让我们快速浏览一下(我们有索引,因为我们最终会想要这么多的导出)
index.ts
|-- package.json
|-- gulpfile.js
|-- dist
|-- index.js
|-- a.js
| src
|-- index.ts
|-- a.ts
a.ts
import a = require('./a');
module.exports = {A: a.A};
index.js
export class A {
field: string;
constructor(aField: string) {this.field = aField;}
toString() : string {return `A: ${this.field}`;}
}
a.js
var a = require('./a');
module.exports = { A: a.A };
那是介绍;现在,我将它推送到git repo并将其作为 package.json 中的依赖并运行var A = (function () {
function A(aField) {
this.field = aField;
}
A.prototype.toString = function () {
return "A: " + this.field;
};
return A;
})();
exports.A = A;
,我们的 main-project < / em>是:
主要项目
npm install
在 app.ts 中,这是失败的: |-- package.json
|-- gulpfile.js
|-- node_modules
|--lib-project
|-- dist
|-- index.js
|-- a.js
|--node
|...
|--src
|--app.ts
app.ts
cannot find module lib-project
我尝试了什么?
import a = require('lib-project');
var foo = new a.A('HELLO');
console.log(foo.toString());
"main": "dist/index.js"
import a = require('node_modules/lib-project/dist/index');
任何帮助表示赞赏:)
修改
的package.json
import a = require('../node_modules/lib-project/dist/index');
答案 0 :(得分:1)
我相信你缺少的是lib项目根目录中的lib-project.d.ts
文件。这将填补你在index.ts中已有的作用,但是你需要稍微调整它以填补这个角色
|-- package.json
|-- gulpfile.js
|-- lib-project.d.ts <-- formerly index.ts
|-- dist
|-- a.js
| src
|-- a.ts
lib-project.d.ts的位置如下:
declare module 'lib-project' {
import a = require('./a');
export = {A: a.A};
}
然后在消费时你可以使用:
import {A} from 'lib-project';
您可以参考我在此处为导出所做的事情:https://github.com/Brocco/ng-bridge
并导入:https://github.com/Brocco/ng-bridge-samples/blob/master/app/app.ts#L1
答案 1 :(得分:0)
您可能需要参考:TypeScript: import external module from node_modules
<强>要点:强>
使用tsc --module commonjs --declaration index.ts
进行编译,然后在导入时使用以下内容:
/// <reference path="node_modules/lib-project/index.d.ts" />
import a = require('lib-project');