Angular CLI 中不在 npm 上的第三方库

3rd Party Libraries in Angular CLI which are not on npm

我目前正在将应用程序从通用 Angular 2 转移到 Angular CLI

现在我想弄清楚如何导入第三方库,比如 orbitcontrols.js npmbower 到我的应用程序。

我在 https://github.com/angular/angular-cli/wiki/3rd-party-libs 上发现导入 npm 支持的库似乎并不难。

版本:

angular-cli 1.0.0-beta.9

我不熟悉 orbitcontrols.js 但我会假设它是一个全局对象。

将该文件放在 CLI 创建的 public 目录中。我建议将类似的东西分组,所以 public/js/orbitcontrols.js.

然后您可以通过以下方式在 index.html 文件中引用该 js 文件:

<script src="js/orbitcontrols.js"></script>

大部分是,但这也取决于图书馆的用途。 Angular-cli 与第 3 方库集成仍然存在一些问题。在他们正确修复它之前,我可以给你一个破解。假设您想在代码中使用 _ of lodash。所以我会给你我的工作代码场景 -

安装 lodash

npm install lodash --save
typings install lodash --ambient --save

在此之前,请确保全局安装类型

npm install typings -g

然后在你的 angular-cli-build.json 中,确保它保持这样

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      ...
      'lodash/**/*.js'
    ]
  });
};

在你的系统中-config.ts:

/** Map relative paths to URLs. */
 const map: any = {
   'lodash': 'vendor/lodash/lodash.js'
 };

 /** User packages configuration. */
 const packages: any = {
   'lodash': {
     format: 'cjs'
   }
 };

在你的 src/index.html 添加这一行(这是奇怪的修复)

<script src="/vendor/lodash/lodash.js" type="text/javascript"></script>

现在在你想要使用 lodash 的组件中,这样写

declare var _:any;

@Component({
})
export class YourComponent {
  ngOnInit() {
     console.log(_.chunk(['a', 'b', 'c', 'd'], 2));
  }
}

它对我有用 :)。我通过 angular-cli 在我的 angular2 项目中使用了大量的第 3 方库。希望对你也有帮助

编辑:

如果您没有为您的第三方库获取任何 npm。创建一个 assets 文件夹 在您的 src 文件夹下。然后您可以为 jscssimages 添加单独的文件夹。 将您的第三方 js 放入 js 文件夹中。 然后你必须像这样在你的 index.html 中引用 js 文件:

<script src="assets/js/your_js.js"></script>

现在,当您执行 ng buildng serve 时,它会使用您的 assets/js 自动更新 public 文件夹。希望您了解整个场景:)