virtual-dependency-loader

0.1.1 • Public • Published

virtual-dependency-loader

Take a single file, process pieces of that file as "dependencies" in loader chain. This is traditionally leveraged inside of other loaders.

Usage

Inside of another loader implementation

loader.js

import querystring from 'querystring';
import {stringifyRequest} from 'loader-utils';
 
export default function someLoader(source, map, ast) {
  const [normalSource, virtualizedSource] = source.split("__virtual_dependency__");
  const {loadModule, resourcePath, async} = this;
  const callback = async();
  const dummyFilePath = path.resolve(__dirname, "../dummy-file.js");
 
  const inlineLoaderOptions = queryString.stringify({
    code: virtualizedSource,
    filename: `${resourcePath}.script.js`
  });
 
  const resource = stringifyRequest(`inline-loader?${inlineLoaderOptions}!${dummyFilePath}`)
 
  const virtualizedSourceProcessedByOtherLoaders = loadModule(resource, (err, code, map) => {
    const newSource = [normalSource, code].join("__virtual_dependency__");
 
    callback(null, newSource);
  });
};

file-that-was-ran-through-loader.js

var hello = "hello";
 
/* __virtual_dependency__ */
class Bar {
  constructor(foo) {
    this.foo = foo;
  };
 
  print() {
    console.log(this.foo);
  }
}
 
const baz = new Bar(hello);

Dependencies (0)

    Dev Dependencies (20)

    Package Sidebar

    Install

    npm i virtual-dependency-loader

    Weekly Downloads

    2

    Version

    0.1.1

    License

    none

    Last publish

    Collaborators

    • thelarkinn