Lia*_*eot 4 node.js npm typescript
我不知道导入Typescript npm模块的正确方法是什么。
这是我要尝试的方法:
模块package.json
{
"name": "my-module",
"main": "src/myModule.ts"
}
Run Code Online (Sandbox Code Playgroud)
模块src / myModule.ts
export module MyModule {
// Code inside
}
Run Code Online (Sandbox Code Playgroud)
使用npm模块的代码
import { MyModule } from 'my-module'; // Doesn't work
import { MyModule } = require('my-module'); // Doesn't work.
Run Code Online (Sandbox Code Playgroud)
该模块作为依赖项安装在package.json中,例如,我可以
import { MyModule } from '../node_modules/my-module/src/myModule.ts';
Run Code Online (Sandbox Code Playgroud)
但这显然不是很好。我想要的是一种只导入主模块文件中所有导出内容的方法,但是似乎不可能。
package.json中的“ main”仅对打包工具(如webpack或angular-cli的构建工具)有用。用于根据用户需求选择不同的捆绑软件:ES6,ES5,UMD ...
TypeScript忽略了这一点。您需要指定所需的文件,就像引用自己的项目一样:
import { MyModule } from 'my-module/src/myModule';
Run Code Online (Sandbox Code Playgroud)
其他类似Angular的库所做的是创建一个桶,该文件通常称为“ index.ts”或“ index.d.ts”,该文件可以导入和导出库中的所有类型。
这样做的好处是,如果在my-module的根目录中创建一个index.d.ts文件:
export { MyModule } from './src/myModule';
// other exports
Run Code Online (Sandbox Code Playgroud)
您可以简单地做到这一点:
import {MyModule} from 'my-module'
Run Code Online (Sandbox Code Playgroud)
作为打字稿,从文件夹导入时,会自动使用index.ts
或index.d.ts
文件。