@plaidev/rollup-plugin-http-resolve
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

@plaidev/rollup-plugin-http-resolve

💿 Installation

npm install rollup-plugin-http-resolve --save

🛠️ Configuration

// rollup.config.js

import { httpResolve } from "@plaidev/rollup-plugin-http-resolve";
import alias from "@rollup/plugin-alias";
import { resolve } from "node:path";
import { fileURLToPath } from "node:url";

const __dirname = fileURLToPath(new URL(".", import.meta.url));

export default {
  input: "index.js",
  plugins: [
    alias({
      entries: [
        /**
         * NOTE:
         *  You have to resolve 'path' like 'path-browserify'
         */
        {
          find: 'path'
          replacement: resolve(__dirname, "./node_modules/path-browserify/index.js"),
        },
        // something alias ...
      ],
    }),
    /**
     * Setup '@plaidev/rollup-plugin-http-resolve' plugin
     */
    httpResolve({
      // something options ...
    }),
  ],
};

🍭 Examples

CDN Resolve

const vol = Volume.fromJSON({
  '/index.js': `
    import {h} from "preact";
    console.log(h);
    `,
});

const memfs = createFs(vol) as IPromisesAPI;
const rolled = await rollup({
  input: '/index.js',
  plugins: [
    httpResolve({
      fallback(id) {
        // Avoid local relative path
        if (!id.startsWith('.')) {
          return `https://esm.sh/${id}`;
        }
      },
    }),
    memfsPlugin(memfs),
  ],
});
const out = await rolled.generate({ format: 'es' });
const code = out.output[0].code;

With transform import

Rewrite https:// code by your self.

import ts from "typescript";

export default {
  plugins: [
    httpResolve(),
    {
      name: "transform-cdn",
      transform(code, id) {
        if (id?.startsWith("https://")) {
          const out = ts.transpileModule(code, {
            compilerOptions: {
              module: ts.ModuleKind.ESNext,
              target: ts.ScriptTarget.ES5,
            },
          });
          return {
            code: out.outputText,
            map: out.sourceMapText,
          };
        }
      },
    },
  ],
});

Credits

  • mizchi for his work on uniroll, this rollup plugin is fokred from the project.

©️ LICENSE

Apache License 2.0

Readme

Keywords

none

Package Sidebar

Install

npm i @plaidev/rollup-plugin-http-resolve

Weekly Downloads

1

Version

0.2.1

License

Apache-2.0

Unpacked Size

20.3 kB

Total Files

6

Last publish

Collaborators

  • plaid-inc