0.1.0 • Published 2 years ago

cross-dirname v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

cross-dirname

Node.js + Gjs + Deno module that returns the current script dirname and filename. Similar to __dirname and __filename but also works in CommonJs and ES modules.

Installation

On Node.js and GJS you can install the package as with NPM:

npm install cross-dirname --save

On Deno you just need to import this package:

import { getDirname, getFilename } from 'https://deno.land/x/cross_dirname/mod.ts';

Usage

Please do not use getDirname and getFilename in nested other methods, instead always use them in the root of your file, otherwise it may return wrong results.

Node.js ESM

// /path/to/the/script.mjs
import { getDirname, getFilename } from 'cross-dirname'

console.log(getDirname()) // outputs "/path/to/the"
console.log(getFilename()) // outputs "/path/to/the/script.mjs"

Node.js CJS

// /path/to/the/script.cjs
const { getDirname, getFilename } = require('cross-dirname');

console.log(getDirname() === __dirname) // true
console.log(getFilename() === __filename) // true

Deno

// /path/to/the/script.ts
import { getDirname, getFilename } from 'https://deno.land/x/cross_dirname@v0.0.4/mod.ts';

console.log(getDirname()); // outputs "/path/to/the"
console.log(getFilename()); // outputs "/path/to/the/script.ts"

GJS

You can use NPM packages in GJS with a bundler like esbuild.

Take a look at the examples for an GJS + esbuild example, you can start the example like this:

# Install dev dependencies 
npm install

# Go to the example
cd examples/gjs

# Bundle src/index.js
node esbuild.mjs

# Run the bundled index.js
gjs -m index.js

Examples

You can run the examples with

npm install
npm run build

deno run ./examples/deno/index.ts 
# -> /.../examples/deno

node ./examples/node/index.cjs 
# -> /.../examples/node

node ./examples/node/index.mjs 
# -> /.../examples/node

node ./examples/gjs/esbuild.mjs
gjs -m ./examples/gjs/index.js 
# -> /.../examples/gjs

Contributions

Contributions for more platforms are welcome :)

Tests

This module has been tested on the following platforms:

RuntimeTypePlatformState
Node.jsCJSLinux
Node.jsCJSMacOS
Node.jsCJSWindows
Node.jsESMLinux
Node.jsESMMacOS
Node.jsESMWindows
DenoESMLinux
DenoESMMacOS
DenoESMWindows
GjsESMLinux
GjsESMMacOSUNTESTED
GjsESMWindowsUNTESTED
ChromeESMBrowser
ChromeCJSBrowser

You can run all tests with:

npm run test

Or the tests for a special runtime:

npm run test:node
npm run test:deno
npm run test:gjs
npm run test:browser´