ggoodman/rollup-plugin-velcro(opens in a new tab)
Language: JavaScript
A Rollup plugin to to resolve and read dependencies straight from the cloud using Velcro
- stars
- 2
- watchers
- 1
- forks
- 0
- open issues
- 0
- Last updated
- 07/10/2020
Language: JavaScript
A Rollup plugin to to resolve and read dependencies straight from the cloud using Velcro
👟 A Rollup plugin to to resolve and read dependencies straight from the cloud ☁ using Velcro.
This plugin must be configured with an http request function having a signature of (href: string) => Promise<ArrayBuffer>.
When running in the browser or environments other than Node.js, an promisified fs-equivalent must be provided that implements:
type Dirent = { isFile(): boolean; isDirectory(): boolean; name: string; }; interface FsInterface { readdir( path: string, options: { encoding: 'utf-8'; withFileTypes: true; } ): Promise<Dirent[]>; readFile(path: string): Promise<ArrayBuffer>; realpath(path: string): Promise<string>; }
Using npm:
npm install rollup-plugin-velcro --save-dev
Create a rollup.config.js configuration file and import the plugin:
import velcro from 'rollup-plugin-velcro'; export default { input: 'src/index.js', output: { dir: 'output', format: 'cjs', }, plugins: [velcro()], };
Then call rollup either via the CLI or the API.
Type: 'jsDelivr' | 'unpkg'
Default: 'jsDelivr'
Selects the CDN that will be used for resolving and reading the files.
Type: boolean
Default: false
Opt into verbose logging of velcro resolver operations.
Type: string[]
Default: [".js", ".json", ".mjs", ".cjs"]
An ordered list of file extensions that will be consulted for resolving dependencies between modules that don't specify the extension.
Type: import('fs')
Default: require('fs')
An implementation of the promisified fs interface that will be used for reading local files.
Type: ('browser' | 'main' | 'module')[]
Default: ["module", "main"]
An ordered list of package.json fields that will be consulted when resolving the default file of an npm module.
Note: This should fully support the sementics of
browseroverrides and exclusions.
Since most packages in your node_modules folder are probably legacy CommonJS rather than JavaScript modules, you may need to use @rollup/plugin-commonjs:
// rollup.config.js import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; export default { input: 'main.js', output: { file: 'bundle.js', format: 'iife', name: 'MyModule', }, plugins: [resolve(), commonjs()], };
This plugin won't resolve any builtins (e.g. fs). If you need to resolve builtins you can install local modules and set preferBuiltins to false, or install a plugin like rollup-plugin-node-polyfills which provides stubbed versions of these methods.
If you want to silence warnings about builtins, you can add the list of builtins to the externals option; like so:
import resolve from '@rollup/plugin-node-resolve'; import builtins from 'builtin-modules' export default ({ input: ..., plugins: [resolve()], external: builtins, output: ... })