Locter is a library to locate and load a file regarding specific criteria.
MIT License
Locter is a library to locate and load a file/modules regarding specific criteria.
Table of Contents
npm install locter --save
The following examples are based on some shared assumptions:
files
exists in the root directory.files
contains the following files:
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}'
);
console.log(files);
/*
[
{ path: 'files', name: 'example', extension: '.js'},
{ path: 'files', name: 'example', extension: '.ts'}
]
*/
files = await locateMany(
'files/*.{js,ts}'
);
console.log(files);
/*
[
{ path: 'files', name: 'example', extension: '.js'},
{ path: 'files', name: 'example', extension: '.ts'},
{ path: 'files', name: 'example-long', extension: '.ts'},
]
*/
})
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}'
);
console.log(file);
/*
{ path: 'files', name: 'example', extension: '.js'}
*/
})
A synchronous variant is also available: locateSync
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}'
);
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}'
);
let content = await loadSync(file);
console.log(content);
// ...
content = await loadSync('...');
console.log(content);
// ...
})
Two loaders are predefined from scratch and already registered:
.conf
files..json
files..yml
files..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) {
}
})
Made with 💚
Published under MIT License.