Skip to main content

Managing Dependencies

This section is work in progress, not all options are implemented/finalized

Parsers and encoders for some formats are quite complex and can be quite big in terms of code size.

Loading Dependencies from Alternate CDN

By default, loaders.gl loads pre-built workers and a number of bigger external libraries from the https://unpkg.com/ CDN.

It is possible to specify other CDNs using options.cdn.

Keep in mind that it is typically not sufficient to point to a server that just serves the data of the files in question. Browsers do a number of security checks on cross-origin content and requires certain response headers to be properly set, and unfortunately, error messages are not always helpful.

To determine your candidate CDN service is doing what is needed, check with curl -u <url> and look for headers like:

content-type: application/javascript; charset=utf-8
access-control-allow-origin: *

Loading Dependencies from Your Own Server

By setting options.cdn: false and doing some extra setup, you can load dependencies from your own server. This removes the impact of a potentially flaky CDN.

Options:

  • Load from node_modules/@loaders.gl/<module>/dist/libs/...
  • Load from a modules directory libs/...
  • Load from unique locations - options.modules[<dependency name>] can be set to url strings.

Bundling Dependencies

It is also possible to include dependencies in your application bundle

  • PRO: Doesn't require copying/configuring/serving supporting modules.
  • CON: Increases the size of your application bundle

options.modules will let your application import or require dependencies (thus bundling them) and supply them to loaders.gl.

See each loader module for information on its dependencies.

Example: bundling the entire draco3d library:

import draco from 'draco3d';
import {setLoaderOptions} from '@loaders.gl/core';
setLoaderOptions({
modules: {
draco3d
}
});