在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.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...