paths.macro

Babel plugin that returns an object containing paths like __dirname and __filename as static values

Usage no npm install needed!

<script type="module">
  import pathsMacro from 'https://cdn.skypack.dev/paths.macro';
</script>

README

Babel paths.macro

A babel macro that allows you to "import" the location of the source-file.

The supported paths you can import:

name example
npmRoot /Users/you/project
gitRoot /Users/you/project
wd /Users/you/project
fileAbsolute /Users/you/project/src/input.js
file input.js
extension .js
filename input
baseAbsolute /Users/you/project/src/
base /src/

The default import is equal to base.

Example

Source file input.js:

import base, { filename } from 'paths.macro';

console.log(base, filename);

alert(filename, base);

function usePathsForSomething() {
  return [filename, base];
}

Output:

console.log("/src/", "input");

alert("input", "/src/");

function usePathsForSomething() {
  return ["input", "/src/"];
}

Config

Install:

yarn add paths.macro

If you don't have babel-macros already you must also install that:

yarn add babel-plugin-macros

Ensure you have babel-plugin-macros in your babel config (.babelrc).

{
  "plugins": ["macros"]
}