dp
v0.4.0
Published
JavaScript loader
Readme
dp
JavaScript loader
Why?
- Import a variety of configuration formats (YAML, TOML, JSON5)
- Loosen Node's standard enforcement of import assertions for JSON
- Import frontend framework formats for server-side templating (JSX, Vue, Svelte, Solid, Handlebars, Marko)
- Import transpiled languages (TypeScript, CoffeeScript)
- Other stuff (
.txtfiles as string,.wasmmodules)
Install
npm install dp
For the loaders, peer deps must be installed and you will be informed if they're missing. See loaders for supported loaders.
Use
In the terminal
If you run from the terminal, you get both static and dynamic imports.
node --import=dp app.js
import config from "./config.json";
// or (await import("./config.json")).defaultProgrammatically
If used programmatically, imports coming after dp() must be dynamic
(import()).
import dp from "dp";
dp();
const config = (await import("./config.json")).default;Configure
This currently applies only programmatically.
extensions
Object property to remap a given extension to a loader. In the following
example, the yaml loader will trigger on .yml files in addition to the
default .yaml.
import dp from "dp";
dp({ extensions: { ".yml": "yaml" } });
const config = (await import("./config.yml")).default;virtuals
Object property in the form of { [path]: code } to load from memory instead
of the filesystem. The loading occurs before any loaders are called.
import dp from "dp";
dp({ virtuals: { "/config.json": '{ "foo": "bar" }' } });
const config = (await import("/config.json")).default;
// config.foo -> "bar"Loaders
|Name |Extension|Dependency |
|------------|---------|-----------------------------------|
|json |.json |none |
|text |.txt |none |
|wasm |.wasm |none |
|csv |.csv |csv-parse |
|json5 |.json5 |json5 |
|toml |.toml |toml |
|xml |.xml |xml2js |
|yaml |.yaml |yaml |
|react |.jsx |esbuild |
|vue |.vue |vue |
|svelte |.svelte |svelte |
|solid |.solid |babel-present-solid @babel/core|
|handlebars |.hbs |handlebars |
|marko |.marko |marko |
|typescript |.ts |esbuild |
|coffeescript|.coffee |coffeescript |
License
MIT
Contributing
By submitting code you confirm that you are its sole owner and agree to place it under the terms of MIT, see LICENSE.
