【发布时间】:2017-05-27 01:27:03
【问题描述】:
我将 Jhipster 4 与 Angular 2 一起使用,并且需要在我的项目中使用第 3 方库,但是该库不在 npm 上并且没有 .d.ts 文件。我需要直接包含js。 在 vendor.ts 中导入适用于通过 npm 安装的库,但不适用于我的 js,如何在我的项目中使用此文件?
【问题讨论】:
标签: javascript angular jhipster
我将 Jhipster 4 与 Angular 2 一起使用,并且需要在我的项目中使用第 3 方库,但是该库不在 npm 上并且没有 .d.ts 文件。我需要直接包含js。 在 vendor.ts 中导入适用于通过 npm 安装的库,但不适用于我的 js,如何在我的项目中使用此文件?
【问题讨论】:
标签: javascript angular jhipster
我现在也在尝试解决这个问题..我实际上无法通过 yarn 安装库来通过将它们导入 vendor.ts 文件来工作..
我当前的解决方法(...直到我能找到正确的方法)是将我需要的 .js 文件复制到 src/main/webapp/content/js/ 并从 webpack.common 中引用它。 CopyWebpackPlugin 插件中的js:
在 webpack.common.js 的 plugins 下,我添加了 CopyWebpackPlugin 的入口:
new CopyWebpackPlugin([
{ from: './node_modules/core-js/client/shim.min.js', to: 'core-js-shim.min.js' },
{ from: './node_modules/swagger-ui/dist', to: 'swagger-ui/dist' },
{ from: './src/main/webapp/swagger-ui/', to: 'swagger-ui' },
{ from: './src/main/webapp/favicon.ico', to: 'favicon.ico' },
{ from: './src/main/webapp/robots.txt', to: 'robots.txt' },
{ from: './src/main/webapp/i18n', to: 'i18n' },
{ from: './src/main/webapp/content/js/FooLib.js', to: 'FooLib.js'}
]),
然后在webapp/index.html中添加一个import
<script src='FooLib.js'></script>
然后在我使用它的组件中声明它:
declare var Foo: any;
【讨论】:
虽然不太理想,但您可以使用普通的旧 js。像往常一样在index.html 中链接它,然后在任何需要使用它的TypeScript 代码中将库的declare 放在文件顶部。所以,例如:
import { Component } from '@angular/core';
declare myAwesomeJsLibrary: any;
@Component(/* brevity*/)
export class AppComponent {
constructor() {
myAwesomeJsLibrary.doSomethingAwesome();
}
}
当然,它不会为您提供任何类型的自动完成功能,但如果您真的需要,您始终可以为它创建自己的接口和 d.ts 文件。这样你至少可以让它工作。
【讨论】: