@rubys/snowpack-plugin-require-context
v0.0.6
Published
require-context plugin for Snowpack
Downloads
13
Readme
@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
- it has no
- 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.