将节点模块导入角度打字稿/角度cli的正确方法是啥

Posted

技术标签:

【中文标题】将节点模块导入角度打字稿/角度cli的正确方法是啥【英文标题】:what is the right way to import a node module to angular typescript / angularcli将节点模块导入角度打字稿/角度cli的正确方法是什么 【发布时间】:2019-02-08 20:39:00 【问题描述】:

我正在将一些“遗留”(非打字稿)js 库导入我的 Angular SPA。

通常我只是从 cdn 向 index.html 添加一个负载,例如:

<script src="//cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako.min.js"></script>

在角度分量中我只是贴花

declare var pako: any;

这通常有效。现在我喜欢在本地“托管”这个库。我可以用

将它添加到 Angular 项目中
npm install pako

但是除了添加到 Angular 应用程序之外,我该如何添加它呢? 我测试了向 polyfills.ts 添加导入(这适用于hammerjs,但不适用于pako)

这也应该适用于 ng build(并且可能会添加到已编译/打包的 runtime.js 中

顺便说一句:这是一个测试堆栈闪电战https://stackblitz.com/edit/ng-load-pako

【问题讨论】:

***.com/a/51897552/2622292 您已通过外部脚本引用添加了它。其他安装 pako 的人也必须这样做 - 通过脚本标签。 实际上在下面导入对于 npm 包来说效果很好,对我来说听起来很优雅。我不需要知道 lib pako.min.js 的路径,只需知道 npm 包名称。没有尝试过 angular.json 中的脚本 tga - 有什么优势吗? (对于这两个似乎都被打包到 vendor.js 中) 【参考方案1】:

我喜欢所有提供 stackblitz 链接的问题,以便我可以轻松地提供正确答案:

https://stackblitz.com/edit/ng-load-pako-gfunsb

基本上,你只需要这样做:

import * as pako from 'pako';

【讨论】:

Thnks 如此简单

以上是关于将节点模块导入角度打字稿/角度cli的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

从 5 到 6 的角度迁移后无法构建 - 找不到模块“打字稿”

带有打字稿的角度材料设计

打字稿中的模块关键字是啥意思?

使用打字稿在 Firebase Cloud 函数中动态导入类的正确方法是啥?

模块与命名空间:组织大型打字稿项目的正确方法是啥?

打字稿定义无法导入Angular2