alias-dirsdeprecated

Create aliases of directories for babel

Usage no npm install needed!

<script type="module">
  import aliasDirs from 'https://cdn.skypack.dev/alias-dirs';
</script>

README

alias-dirs

Codecov Open Issues Dependencies License

NPM

Automically creates aliased directories for babel! No more relative path traversing in babel like so:

import ExampleComponent from "../../../../../components/ExampleComponent"

Instead, with the help of the babel-plugin-module-resolver, this package automatically creates aliases to root-level . directories and top-level directories within the src directory... so you don't have to:

import ExampleComponent from "~components/ExampleComponent"

If you add a folder to one of these directories while developing, not a problem, simply restart the node service and the folder will be automatically aliased!

Installation

Usage

Props

Advanced Usage

Alias Symbols

Ignore Directories

Pathing

Debugging

Example

Report Bugs

Feature Requests

License

Installation

npm i -D alias-dirs

or

yarn -D alias-dirs

Usage

babel.config.js (must be a .js file)

const aliasDirs = require("alias-dirs")

module.exports = api => {
  api.cache.using(() => process.env.NODE_ENV)

  return {
    presets: [...],
    plugins: [
      [
        "module-resolver",
        {
          alias: aliasDirs()
        }
      ]
    ]
  }
}

And you're all set! Now you can import a ~root directory from within any nested .js files:

import "~styles"
import ExampleComponent from "~components/Example" 
import ExampleContainer from "~containers/Example"

Props

The following props are accepted by aliasDirs():

prop Description
alias(str) A string to alias directories to (default: Alias Symbols)
debug(bool) A boolean to output debug messages (default: false) Debugging
ignoreDirectories(arr) An array of string directory paths to ignore (default: Ignore Directories)
paths(arr) An array of string directory paths relative to the root project directory (default: Pathing)
suppressWarnings(bool) A boolean to suppress warnings (default: false)

Advanced Usage

Alias Symbols

By default this package will alias all directories with a tilde ~.

If you wish to override the predefined alias, then you can supply a string to the alias property.

For example:

aliasDirs({ alias: "quot; })

WARNING: This module will not play well with public or private npm @ name-spaced packages. Aliasing with an empty string "" or with the private @ symbol is discouraged and not recommended as it may conflict with a node_module package. A warning will be shown if an empty string or @ is used. If you want to supress warnings, then add suppressWarnings: true property. As such, use at your own risk.

Ignore Directories

By default this package will ignore the following directories:

build
config
coverage
cypress
dist
env
public

In addition, these directories will also be automatically ignored by enforcement:

^[.]/ // any directories with "." in their name
node_modules

If you wish to override the defaults, then you must supply an array of string directory names to ignoreDirectories:

For example:

// this will override the default and ignore ANY directories named "secret"
aliasDirs({ ignoreDirectories: ["secret"] })

If you want to keep the default ignored directories and extend from them, then you can utilize the predefined aliasDirs.ignoreDirectories array.

For example:

const aliasDirs = require("../index")

module.exports = api => {
  api.cache.using(() => process.env.NODE_ENV)

  return {
    presets: [...],
    plugins: [
      [
        "module-resolver",
        {
          alias: aliasDirs({
            ignoreDirectories: [ ...aliasDirs.ignoreDirectories, "components" ]
          })
        }
      ]
    ]
  }
}

Pathing

By default, this package will only alias root-level directories within the project's root directory . and top-level directories within the ./src directory.

If you wish to override the default paths, then you can supply an array of root-level relative string paths to the paths property (do NOT include trailing slashes).

For example:

// this traverses all subdirectories within "./server", ignoring the root "." and "./src" directories
aliasDirs({ paths: ["./server"] })

Debugging

If you want to make sure your directories are being properly ignored/aliased, then add a debug: true property. This will display a console log of: the traversed paths, the alias, the ignored directories, and the resulting aliased directories.

For example:

aliasDirs({ debug: true })
Default debug output

Debug: Traversing paths... [.,./src]
Debug: Using alias... (~)
Debug: Ignoring directories... [build,config,coverage,cypress,dist,env,public,node_modules]
Debug: Aliasing directories... {"~src":"./src","~components":"./src/components","~containers":"./src/containers","~pages":"./src/pages"}

Example

This package comes with a very simple example.

To run it, clone the repo: git clone git@github.com:mattcarlotta/alias-dirs.git

Install the example dependencies: cd example && npm i or cd example && yarn

Run the example: npm run example or yarn example

Feature Requests

Have a feature you want included or believe the package is missing something? You can either fork the repo, commit changes, and submit a new PR (please include relevant .tests.js files and run npm run test:cov or yarn test:cov to make sure the code is covered) or you can submit a feature request.

Report bugs

If you run into any issues, please fill out a bug report.

⚠️ NOTE: Please provide a reproducible codesandbox example of the bug(s) you're experiencing. Issues that don't provide a reproducible example may be ignored.

License

alias-dirs is MIT licensed.