@doubledashdev/remote-modules
TypeScript icon, indicating that this package has built-in type declarations

0.2.2 • Public • Published

Remote Modules

GitHub Workflow Status npm bundle size npm

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 and SystemJS 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

Readme

Keywords

none

Package Sidebar

Install

npm i @doubledashdev/remote-modules

Weekly Downloads

0

Version

0.2.2

License

MIT

Unpacked Size

216 kB

Total Files

20

Last publish

Collaborators

  • minajevs