Node.js + Gjs + Deno module that returns the current script dirname. Similar to __dirname
but also works in CommonJs and ES modules.
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 dirname from 'https://deno.land/x/cross_dirname/mod.ts';
// /path/to/the/script.mjs
import dirname from 'cross-dirname'
console.log(dirname()) // outputs "/path/to/the"
// /path/to/the/script.cjs
console.log(require('cross-dirname')() === __dirname) // true
// /path/to/the/script.ts
import dirname from 'https://deno.land/x/[email protected]/mod.ts';
console.log(dirname()); // outputs "/path/to/the"
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
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 for more platforms are welcome :)
This module has been tested on the following platforms:
Runtime | Type | Platform | State |
---|---|---|---|
Node.js | CJS | Linux | ✔ |
Node.js | CJS | MacOS | ✔ |
Node.js | CJS | Windows | ✔ |
Node.js | ESM | Linux | ✔ |
Node.js | ESM | MacOS | ✔ |
Node.js | ESM | Windows | ✔ |
Deno | ESM | Linux | ✔ |
Deno | ESM | MacOS | ✔ |
Deno | ESM | Windows | ✔ |
Gjs | ESM | Linux | ✔ |
Gjs | ESM | MacOS | UNTESTED |
Gjs | ESM | Windows | UNTESTED |
Gjs | NO-ESM | Linux | TODO |
Gjs | NO-ESM | MacOS | TODO |
Gjs | NO-ESM | Windows | TODO |
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