在TypeScript中导入Node.js npm模块(node_modules)和声明

前端之家收集整理的这篇文章主要介绍了在TypeScript中导入Node.js npm模块(node_modules)和声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我认为直接从node_modules目录导入模块会很棒,而不需要为它手动提供声明文件(让我们假设声明是由模块本身提供的).我想这个问题是声明附带的依赖(文件路径可以相对于模块解析,但这会导致重复,编译器无法处理).
目前使用节点模块非常不方便,因为从npm存储库进行简单安装是不够的,我们必须手动搜索声明并在我们的项目中提供它们.假设我们的项目依赖于10个节点模块(所有模块都有声明),一年之后我们想要更新它们.我们必须手动搜索新的声明,让我们说我们有大约20个这样的项目(这将成为一场噩梦).也许应该有一个选项直接从节点模块导入.ts文件

你有什么建议吗?

这是CodePlex的重新发帖,听取您的意见……

解决方法

如果你使用grunt-typescript,那么我有一个pull请求,这至少对我来说是解决了这个问题.见 https://github.com/k-maru/grunt-typescript/pull/36

从拉请求README

使用node_modules中的模块(即npm)

使用npm包的标准方法是提供定义文件
指定打字稿的包并从那里导入模块.

///<reference path="path/to/mod.d.ts" />
import mod = module('mod')

typescript编译器会将导入转换为nodejs require.

var mod = require('mod')

这是非常笨拙的,因为你需要知道准确的路径
npm安装包和npm可以把包放在任何地方
处理多个级别的依赖项时的级别.

使用grunt配置中的node_modules选项,您可以
导入一个npm包,而不需要知道确切的级别
只要在本地安装,npm就已经安装了软件包
而不是全球性的.

要在打字稿源中导入npm模块,请执行以下操作:

import npmModule = module('node_modules/npmModule/foo')

这主要是因为幸运的机会. Typescript编译器将读取如果是,则打字稿定义文件node_modules / npmModule / foo.d.ts在通往根的路上和结果的某一点出现如果需要,javascript文件将包含npmModule / foo的require.

猜你在找的Node.js相关文章