liferay-npm-bundler-plugin-inject-peer-dependencies

A liferay-npm-bundler plugin to force injection of dependencies in packages declaring peer dependencies.

Usage no npm install needed!

<script type="module">
  import liferayNpmBundlerPluginInjectPeerDependencies from 'https://cdn.skypack.dev/liferay-npm-bundler-plugin-inject-peer-dependencies';
</script>

README

liferay-npm-bundler-plugin-inject-peer-dependencies

Inject peer and undeclared dependencies (as long as they are installed under

"node_modules") in package.json files.

Installation

npm install --save-dev liferay-npm-bundler-plugin-inject-peer-dependencies

Usage

Add the following to your .npmbundlerrc file:

Without options:

{
    "*": {
        "plugins": ["inject-peer-dependencies"]
    }
}

With options:

{
    "*": {
        "plugins": [
            [
                "inject-peer-dependencies",
                {
                    "defineCall": "Liferay.Loader.define"
                }
            ]
        ]
    }
}

Technical Details

This plugin injects missing dependencies in package.json files when they are found inside AMD define() calls in any of their module files and the dependency is installed under "node_modules". This is needed for peer dependencies to work correctly under Liferay's npm architecture and it may also make some incorrect setups work they way they do on Node.js.

To determine the version of the dependencies to inject, the plugin resolves the peer/undeclared packages from the context of the module where they are referenced using the standard node resolve algorithm.

Please note that, for the referenced packages to be included they must also be listed in the project's package.json so that they are included in the final OSGi bundle.