自动在模块中包装Typescript定义文件

时间:2016-06-10 14:43:17

标签: node.js typescript npm

我很可能在这里错过了一些tsconfig选项。

我在做什么很简单:

我正在创建一个npm模块,例如:

export class HelloWorld {
    constructor(public greeting: string){}
}

我的tsconfig是:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    "removeComments": true,
    "noImplicitAny": false,
    "preserveConstEnums": true,
    "declaration": true,
    "suppressImplicitAnyIndexErrors": true,
    "outDir": "../js"
  },
  "filesGlob": [
    "./**/*.ts",
    "!./node_modules/**/*.ts"
  ]
}

当我的声明自动创建时,它看起来像这样:

export declare class HelloWorld {
    greeting: string;
    constructor(greeting: string);
}

但是在其他项目中实际安装npm软件包时,这并不能正常工作。当我导入包时我必须使用:

import hello = require("hello-world/js/index");

(例如)

我发现当我在模块declare module "hello-world" {...}中包装声明文件时,我可以根据需要导入import hello = require("hello-world");

手动包装生成的定义文件不是一个选项,因为它一直在重写,是否有任何选项可以从package.json获取包的名称并自动将定义包装在该模块中?

1 个答案:

答案 0 :(得分:1)

确保您在typings ...

中指定了package.json属性
{
    "name": "hello-world",
    "typings": "hello-world.d.ts",
    ...etc...
}

...或将您的定义文件更改为名为index.d.ts

然后在使用这些更改安装包之后,编译器将能够在您编写时解析它:

import hello = require("hello-world");

More details