@discordx/importer

A solution to import files on the module and commonjs at the same time

Usage no npm install needed!

<script type="module">
  import discordxImporter from 'https://cdn.skypack.dev/@discordx/importer';
</script>

README

Discord server NPM version NPM downloads Build status paypal

Create a discord bot with TypeScript and Decorators!

@discordx/importer

You can use this library without discordx

Support esm and cjs at the same time

Usage

If you use this code with esm or ejs, it will tell you about your environment.

import { isESM } from "@discordx/importer";

console.log(`isESM: ${isESM}`);

Resolve glob paths

console.log(resolve(`${__dirname}/commands/**.js`));

Import glob paths

Here is an example that could be used with the commonjs or esm modules

Module - CommonJS

importx(`${__dirname}/commands/**.js`).then(() =>
  console.log("All files imported")
);

Module - ESNext

Remember: In esm, __dirname is not defined, so here is a workaround

import { dirname, importx } from "@discordx/importer";
const __dirname = dirname(import.meta.url);

importx(`${__dirname}/commands/**.js`).then(() =>
  console.log("All files imported")
);

Combine - CommonJS and ESNext

If you are creating a module or extension of your own library, you can set it to auto-import paths based on the user module

import { dirname, importx, isESM } from "@discordx/importer";
const folder = isESM ? dirname(import.meta.url) : __dirname;

importx(`${folder}/commands/**.js`).then(() =>
  console.log("All files imported")
);

Use relative path

You can use relative path, which will be more convinient to write code by eleminating DIRNAME

import { importx } from "@discordx/importer";

// relative path start from root folder
importx("./tests/commands/**.js").then(() => console.log("All files imported"));