Skip to content
Permalink
main
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time

@rubys/snowpack-plugin-require-context

A Snowpack plugin implementing webpack's require.context API. The motivation for this was to bring the simplicity of Webpack's development of Stimulus applications to Snowpack, but it should be useful for other purposes too.

This plugin works by rewriting require.context calls to generate the necessary context definitions at build time. It will also watch the source directories for changes and trigger a rebuild when files change.

The input configuration option described below is optional, and if not present will cause all .js files to be scanned. Only those that contain calls to require.context will be processed by this plugin.

Limitations of this implementation:

  • fourth argument to require.context (sync) is ignored/not supported
  • resulting context object only has a keys property, in other words
    • it has no resolve function
    • it has no id property
  • module definitions does not contain named exports, only default

None of these limitations affect Stimulus.js usage.

Usage:

npm install @rubys/snowpack-plugin-require-context

Then add the plugin to your Snowpack config:

// snowpack.config.js

module.exports = {
  plugins: [
    [
      '@rubys/snowpack-plugin-require-context',
      {
        input: ['application.js'], // files to watch
      },
    ],
  ],
};

Once the plugin is installed, you can use require.context just like you would with Webpack. An example usage with Stimulus.js:

// src/application.js
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"

const application = Application.start()
const context = require.context("./controllers", true, /\.js$/)
application.load(definitionsFromContext(context))

Plugin Options

Name Type Description
input string[] Array of extensions to watch for.