GithubHelp home page GithubHelp logo

derickwarshaw / webpack-resolve-short-path-plugin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jameslnewell/webpack-resolve-short-path-plugin

0.0 2.0 0.0 11 KB

A plugin for `enhanced-resolve` (Webpack v2) that resolves paths like `~module` to `%rootPath%/module` so you don't have to write relative paths like `../../../module`.

JavaScript 100.00%

webpack-resolve-short-path-plugin's Introduction

webpack-resolve-short-path-plugin

A plugin for enhanced-resolve (Webpack v2) that resolves paths like ~module to %rootPath%/module so you don't have to write relative paths like ../../../module.

Installation

npm install --save-dev webpack-resolve-short-path-plugin

Usage

var path = require('path');
var ResolveShortPathPlugin = require('webpack-resolve-short-path-plugin');

module.exports = {
  // ...
  resolve: {
    plugins: [
      new ResolveShortPathPlugin({rootPath: path.join(__dirname, 'src')})
    ]
  },
  // ...
};

Example:

actions/sendForm.js

export default function(recipient, subject, message) {};

components/ContactPage/ContactPage.jsx

import sendForm from '~actions/sendForm'; //resolves to `../../actions/sendForm`

Why

Why use short paths?

In deeply nested directory structures, using relative paths to require modules above the current module directory can be tricky:

  • you have to know the right number of ..s to use
  • if you ever move the current module you'll need to update the number of ..s

Why use ~module?

I wanted a short prefix to save typing.

That rules out <package-name>/module because forcing developers to change their package name in order to achieve a shorter path is lame, and package names may already be used for other purposes.

I didn't want it to clash with the possible namespace of npm packages.

That rules out app/module, src/module, @app/module, @src/module etc because app, src, @app/module and @src/module are all valid npm package names.

I didn't want it to clash with existing operating system conventions (so it can be reused when bundling applications for NodeJS).

That rules out ~/ and /.

Why not use resolve.aliases or resolve.modules?

Using resolve.alias requires manual setup for every directory in your rootPath directory and results in confusion when resolve.aliases have been setup for some directories but not all of them.

Using resolve.module clashes with the possible namespace of npm packages and results in confusion over whether the imported module is a npm package in node_modules or is a local module in your rootPath directory.

Change log

1.0.4

Change peerDeps to only require beta 21

1.0.3

Fix wording in doco.

1.0.2

Replace <rootPath> in package.json description so npmjs.com doesn't display nothing.

1.0.1

Remove backticks from package.json description so npmjs.com doesn't display <code>

1.0.0

Initial release.

webpack-resolve-short-path-plugin's People

Watchers

James Cloos avatar Derick Warshaw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.