/dynamic-alias-resolve-plugin

dynamic alias, enhanced-resolve plugin

Primary LanguageJavaScript

dynamic-alias-resolve-plugin

Introduction

Thanks for the help of enhanced-resolve, we can define alias for path, but it's static, in some cases we may want alias point to A path or B path, in other words, we want dynamic alias. enhanced-resolve is based on tapable, so we can write a plugin to make it.

Read this in other languages: english, 简体中文

Prerequisites

This module requires webpack v4 and above.

Installation

npm install -D dynamic-alias-resolve-plugin

Usage

In your webpack config, require() the dynamic-alias-resolve-plugin plugin as follows:

const DynamicAliasResolvePlugin = require("dynamic-alias-resolve-plugin");

and finally, add the plugin to your resolve configuration's plugins array

// https://webpack.js.org/configuration/resolve/#resolveplugins
resolve: {
  plugins: [
    new DynamicAliasResolvePlugin({
      // alias you want to make it dynamic
      alias: "@",
      // pathA or pathB should be replaced with real path
      // "request" is raw request object from enhanced-resolve
      // "alias" is matched alias of current request.(eg. "@" in "@/login.less")
      dynamic: (request, alias) => "pathA or PathB",
      // we just want less file to be handled by this plugin
      pattern: /\.less$/,
    }),
  ];
}

Options

properties type default
alias string ['@']
dynamic function(request,alias)=>string|null|false|undefined ()=>null
pattern RegExp /.*/

Description Of Options

alias

alias you want to make it dynamic

dynamic

return value should be absolute path,all false value('',false,null) will be ignored. request is raw enhanced-resolve request object, alias is current alias you want make it dynamic. (eg. "@" in "@/login.less")

pattern

files needs handled by this plugin