Socket
Socket
Sign inDemoInstall

@bva/override-resolver

Package Overview
Dependencies
0
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @bva/override-resolver

Webpack resolver plugin for overriding or aliasing dependencies and component requests.


Version published
Weekly downloads
2
increased by100%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Override Resolver

Webpack resolver plugin for overriding or aliasing dependencies and component requests.

Leverages enhanced-resolve to handle internal resolution and hook into the request’s lifecycle.

Installation

//npm
npm install @bva/override-resolver

//yarn
yarn add @bva/override-resolver

Why?

This plugin was born from the need to customize 3rd party UI Kits, Component Libraries, etc. without requiring a local clone of the entire library.

A simple example is a Button component provided by a library installed in node_modules as a dependency. This **Button** may be in use by said library throughout multiple other components, which typically makes it difficult to add global custom logic to that Button across your app or project.

Override Resolver trivializes such scenario by providing the option to update that one Button component, or specific parts of it, without affecting the rest of the Component Library.

Why not use Webpack’s native resolve.modules or resolve.alias?

Both of those may be good enough for certain applications, however they share the limitation of not resolving a package’s internal relative requests. Webpack resolve.modules and resolve.alias would only work if all requests were done using module paths (i.e. @moduleName/path/to/component).

Override Resolver is able to handle absolute, module, and relative paths. If a request to a file exists, Override Resolver is able to override it.

Other applications

This plugin can be used outside of simple Component/UI Library overrides you can specify any given request path to alias or override files from.

This can also be leveraged to setup a theme structure or a fallback system for your modules and components.

Support

Requires Webpack 4.x+ and works with NuxtJS, Vue, NextJS, React, JS, SCSS, plus any other file type or framework that can use Webpack.

Usage

Webpack Config file

const path = require('path');
const OverrideResolver = require('@bva/override-resolver');

const WebpackConfig = {
  //...
  resolve: {
    plugins: [
      new OverrideResolver({
        name: '@bva',
        alias: path.resolve(__dirname, 'overrides'),
      })
    ],
  },
  //...
}

module.exports = WebpackConfig;

NuxtJS

import path from 'path';
import OverrideResolver from '@bva/override-resolver';

const NuxtConfig = {
  //...
  build: {
    extend(config) {
      config.resolve.plugins.push(new OverrideResolver(
        {
          name: '@bva',
          alias: path.resolve(__dirname, 'overrides'),
        },
      ));
    },
  },
  //...
};

export default NuxtConfig;

Keywords

FAQs

Last updated on 21 Mar 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