arcgispack

Bundle the ArcGIS API for you

Usage no npm install needed!

<script type="module">
  import arcgispack from 'https://cdn.skypack.dev/arcgispack';
</script>

README

ArcGISPack

Bundle the ArcGIS API for you

Examples

Usage

First, Add the arcgispack bundle to your application

You can use either the full build from the CDN or create a custom bundle.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/g3r4n/arcgispack@0.0.25/esri-bundle/bundle.js"></script>
<!-- uncomment the line below for local bundle -->
<!-- <script type="text/javascript" src="esri-bundle/bundle.js"></script> -->

How to create your own bundle

  1. add the package Add arcgispack as a dev dependency

    npm i -D arcgispack
    

    or

    yarn add -D arcgispack
    
  2. create the arcgis.config.js file in the root folder

  3. update the configuration to match your needs

    • outputPath : folder where the API build will generate
    • dojoModules : Array of API dojo modules to build and to access through the lib entry
  4. generate a build (or update your package.json to create a task )

    npx arcgispack
    
  5. Build your amazing app as you wish without tradeoff

Second, Add your arcgispack bundle to your application

Use arcgis-wrapper to get modules from the ArcGIS JS API.

import { Map, SceneView, SceneLayer } from "arcgis-wrapper";

Why

The current arcgis/webpack-plugin has the following tradeoffs

  • you can't use creaste-react-app or other tools/template without changing the underlining configuration
  • you can't use another bundling tool other than webpack
  • you have to deal and understand webpack configuration

Using this tool to bundle the esri js API allows you to build the application as you want without tradeoff.

TODO

  • Have the babel configuration in the tool to avoid saving the existing babel et reatoring the babel configuration
  • Change the DEFAULT_LOADER_URL in the esriconfig
  • Change DEFAULT_WORKER_URL in the esriconfig
  • restore copy of babel config in case of error
  • make it completely configurable
  • create a verbose and normal mode to limit the output list