Socket
Socket
Sign inDemoInstall

cross-dirname

Package Overview
Dependencies
0
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cross-dirname

[Node.js](https://nodejs.org) + [Gjs](https://gjs.guide/) + [Deno](https://deno.land/) module that returns the current script dirname and filename. Similar to `__dirname` and `__filename` but also works in CommonJs and ES modules.


Version published
Weekly downloads
63K
decreased by-2.81%
Maintainers
1
Install size
10.2 kB
Created
Weekly downloads
 

Readme

Source

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´

Keywords

FAQs

Last updated on 22 Jul 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc