如何使用常规的第三方js libs与Jhipster 4?

时间:2017-05-13 19:06:38

标签: javascript angular jhipster

我正在使用Jhipster 4和Angular 2,并且需要在我的项目中使用第三方库,但是该库在npm上没有,并且没有.d.ts文件。我需要直接包含js。 在vendor.ts中导入适用于通过npm安装的库但不能与我的js一起使用,我如何在我的项目中使用该文件?

2 个答案:

答案 0 :(得分:3)

我现在也试图解决这个问题。我实际上无法通过纱线来安装库,可以通过在vendor.ts文件中导入它们来实现..

我当前的解决方法(......直到我能找到正确的方法)将我需要的.js文件复制到src / main / webapp / content / js /并从webpack.common引用它。 CopyWebpackPlugin插件中的js:

在webpack.common.js的插件下,我在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

中添加了一个导入
    <script src='FooLib.js'></script>

然后在我使用它的组件中声明它:

declare var Foo: any;

答案 1 :(得分:0)

虽然它不太理想,但你可以使用普通的js。像往常一样在index.html中链接它,然后在需要使用它的任何TypeScript代码中将库的declare放在文件的顶部。所以,例如:

import { Component } from '@angular/core';
declare myAwesomeJsLibrary: any;

@Component(/* brevity*/)
export class AppComponent {
  constructor() {
    myAwesomeJsLibrary.doSomethingAwesome();
  }
}

当然,它并没有为您提供任何类型的自动完成功能,但如果确实需要,您可以随时为它创建自己的界面和d.ts文件。通过这种方式,您至少可以使其正常工作。