Skip to content

support node.js module.createRequire() #4274

@dnalborczyk

Description

@dnalborczyk

Feature Use Case

not quite sure who's responsibility this would fall in, I assume rollup as well as the commonjs plugin.

https://nodejs.org/dist/latest-v17.x/docs/api/module.html#modulecreaterequirefilename

use case reference: sindresorhus/cli-spinners#58

index.js

import { createRequire } from "node:module"

const require = createRequire(import.meta.url)

const json = require("./foo.json")

console.log(json)

foo.json

{
  "foo": 1
}
import json from "@rollup/plugin-json";
import commonjs from "@rollup/plugin-commonjs";

export default {
  external: ["./foo.json"],
  input: "./index.js",
  output: {
    file: "./build/bundle.js",
  },
  plugins: [commonjs(), json()],
}

currently bundled:

import { createRequire } from 'node:module'

const require = createRequire(import.meta.url)

const json = require("./foo.json")

console.log(json)

I'd imagine it would bundle to something along the lines of:

var rollupCreateRequireTest = {};

var foo = 1;
var require$$0 = {
	foo: foo
};

const json = require$$0;

console.log(json);

export { rollupCreateRequireTest as default };

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions