Locter 🔥
Locter is a library to locate and load a file/modules regarding specific criteria.
Table of Contents
Installation
npm install locter --save
Usage
The following examples are based on some shared assumptions:
- A folder named
files
exists in the root directory. - The folder
files
contains the following files:
- example.js
- example.json
- example.ts
- example-long.ts
Locator
Multiple
Locating multiple files will return information about all files matching the pattern.
import { locateMany } from 'locter';
(async () => {
let files = await locateMany(
'files/example.{js,.ts}',
{
path: process.cwd()
}
);
console.log(files);
files = await locateMany(
'files/*.{js,ts}',
{
path: process.cwd()
}
);
console.log(files);
})
A synchronous variant is also available: locateManySync
Single
Locating a single file will return information about the first file matching the pattern.
import { locate } from 'locter';
(async () => {
let file = await locate(
'files/example.{js,.ts}',
{
path: process.cwd()
}
);
console.log(file);
})
A synchronous variant is also available: locateSync
Loader
The load
method can be used to load a file/module in an asynchronous fashion.
Either a string or the output of the locate/locateSync method can be passed as argument.
import { load, locate } from 'locter';
(async () => {
const file = await locate(
'files/example.{js,.ts}',
{
path: process.cwd()
}
);
let content = await load(file);
console.log(content);
content = await load('...');
console.log(content);
})
There is also a synchronous method called loadSync
to load files.
import { loadSync, locateSync } from 'locter';
(async () => {
const file = await locateSync(
'files/example.{js,.ts}',
{
path: process.cwd()
}
);
let content = await loadSync(file);
console.log(content);
content = await loadSync('...');
console.log(content);
})
Two loaders are predefined from scratch and already registered:
- JsonLoader: This loader allows to load
.json
files. - ModuleLoader: This loader allows to load modules with
.js
, .mjs
, .mts
, .cjs
, .cts
, .ts
file extensions independent of the environment (cjs or esm).
To register loader for other file types, the function registerLoader
can be used.
import { registerLoader } from 'locter';
registerLoader(['.ext'], {
execute(input: string) {
},
executeSync(input: string) {
}
})
License
Made with 💚
Published under MIT License.