Remote Modules
Dynamically loading JS Modules
Simple, low-code, zero-dependency remote module loader because why not.
npm install @doubledashdev/remote-modules
const url = 'https://raw.githubusercontent.com/jonschlinkert/is-number/master/index.js'
const isNumber = await load(url)
isNumber(42) // returns true
Intro
Dynamic module loading allows you to load JS modules from the internet dynamically, bypassing whatever build & load systems (babel, webpack, browserify, etc.)
AMD
, UMD
, CommonJS
and SystemJS
modules are supported. You can load any module from the internet built for one of those module loaders using simple load(url)
function.
Brazenly stolen Forked from https://github.com/Paciolan/remote-module-loader
Features
- Seamless support for
AMD
,UMD
,CommonJS
andSystemJS
modules - Async module loading using promises or
async / await
- Configurable fetching
- Configurable module dependencies
- TypeScript typings for expected module
Examples
Basic usage
import { load } from '@doubledashdev/remote-modules'
const url = 'https://raw.githubusercontent.com/jonschlinkert/is-number/master/index.js'
const isNumber = await load(url)
isNumber(42) // returns true
Providing custom fetcher
import { load } from '@doubledashdev/remote-modules'
import axios from 'axios'
const url = 'https://raw.githubusercontent.com/jonschlinkert/is-number/master/index.js'
const fetcher = url => axios.get(url).then(request => request.data)
const isNumber = await load(url, { fetcher })
isNumber(42) // returns true
Providing dependencies
import { load } from '@doubledashdev/remote-modules'
import isNumber from 'is-number'
const url = 'https://raw.githubusercontent.com/jonschlinkert/is-odd/master/index.js'
const dependencies = {
'is-number': isNumber,
}
const isOdd = await load(url, { dependencies })
isOdd(42) // returns false
Providing expected module type
import { load } from '@doubledashdev/remote-modules'
const url = 'https://raw.githubusercontent.com/jonschlinkert/is-number/master/index.js'
const isNumber = await load<(value: number) => boolean>(url)
isNumber(42) // returns true, and is well-typed
MIT License