微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/nodejs/445732.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐