[英]Importing Node.js npm modules (node_modules) & declarations in TypeScript
我认为直接从node_modules目录导入模块会很棒,而不需要为它手动提供声明文件(让我们假设声明是由模块本身提供的)。 我想这个问题是声明附带的依赖(文件路径可以相对于模块解析,但这会导致重复,编译器无法处理)。 目前使用节点模块非常不方便,因为从npm存储库进行简单安装是不够的,我们必须手动搜索声明并在我们的项目中提供它们。 假设我们的项目依赖于10个节点模块(所有模块都有声明),一年之后我们想要更新它们。 我们必须手动搜索新的声明,让我们说我们有大约20个这样的项目(这将成为一场噩梦)。 也许应该有一个选项直接从节点模块导入.ts文件?
你有什么建议吗?
这是CodePlex的重新发帖,听取您的意见......
如果你使用grunt-typescript,那么我有一个pull请求,这至少对我来说是解决了这个问题。 请参阅https://github.com/k-maru/grunt-typescript/pull/36
从拉请求README
使用npm包的标准方法是提供一个定义文件,该文件指定打字稿的包并从那里导入模块。
///<reference path="path/to/mod.d.ts" />
import mod = module('mod')
typescript编译器会将import
转换为nodejs require
。
var mod = require('mod')
这是非常笨拙的,因为您需要知道npm安装包的精确路径,并且当您使用多级依赖项时,npm可以将包放在几乎任何级别。
使用grunt配置中的node_modules
选项,您只需import
npm包,而无需知道npm安装包的确切级别,只要它是在本地安装而不是全局安装。
要在打字稿源中import
npm模块,请执行以下操作:
import npmModule = module('node_modules/npmModule/foo')
这主要是因为幸运的机会。 Typescript编译器将读取node_modules/npmModule/foo.d.ts
定义文件node_modules/npmModule/foo.d.ts
如果它存在于朝向根的路上的某个点,并且如果需要,生成的javascript文件将包含npmModule/foo
的require
。
我认为节点模块不会包含内置的打字稿支持。 该语言仍为0.x版本,官方称为alpha版本。
然而,有一些方法可以简化打字稿的配置过程。 Github已经包含了大量的.d.ts文件集合,例如:
https://github.com/borisyankov/DefinitelyTyped或https://github.com/soywiz/typescript-node-definitions
您可能需要查看此工具: https : //github.com/Diullei/tsd 。 我从来没有使用它,但它似乎几乎是你正在寻找的。
此外,我听说计划使用.d.ts文件的官方数据库。 不幸的是我找不到链接,但它可能还需要一段时间才能实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.