How AMD Loader Configuration is Exported
The Liferay npm bundler is deprecated of Liferay 2024.Q4/Portal GA129, and it’s planned for future removal.
If you don’t understand how Liferay AMD Loader works under the hood, please read Liferay AMD Module Loader first.
With de-duplication in place, JavaScript modules are made available to Liferay AMD Loader through the configuration returned by the /o/js_loader_modules URL.
The OSGi bundle shown below is used for reference in this article:
- my-bundle/- META-INF/- resources/- package.json- name: my-bundle-package
- version: 1.0.0
- main: lib/index
- dependencies:
- isarray: 2.0.0
- isobject: 2.1.0
 
- …
 
- lib/- index.js
- …
 
- …
- node_modules/- isobject@2.1.0/- package.json- name: isobject
- version: 2.1.0
- main: lib/index
- dependencies:
- isarray: 1.0.0
 
- …
 
- …
 
- isarray@1.0.0/- package.json- name: isarray
- version: 1.0.0
- …
 
- …
 
- isarray@2.0.0/- package.json- name: isarray
- version: 2.0.0
- …
 
- …
 
 
 
 
 
For example, for the above structure, as explained in OSGi Bundles and npm Package Structure, the configuration below is published for Liferay AMD loader to consume:
Liferay.PATHS = {
  ...
  'my-bundle-package@1.0.0/lib/index': '/o/js/resolved-module/my-bundle-package@1.0.0/lib/index',
  'isobject@2.1.0/index': '/o/js/resolved-module/isobject@2.1.0/index',
  'isarray@1.0.0/index': '/o/js/resolved-module/isarray@1.0.0/index',
  'isarray@2.0.0/index': '/o/js/resolved-module/isarray@2.0.0/index',
  ...
}
Liferay.MODULES = {
  ...
  "my-bundle-package@1.0.0/lib/index.es": {
    "dependencies": ["exports", "isarray", "isobject"],
    "map": {
      "isarray": "isarray@2.0.0",
      "isobject": "isobject@2.1.0"
    }
  },
  "isobject@2.1.0/index": {
    "dependencies": ["module", "require", "isarray"],
    "map": {
      "isarray": "isarray@1.0.0"
    }
  },
  "isarray@1.0.0/index": {
    "dependencies": ["module", "require"],
    "map": {}
  },
  "isarray@2.0.0/index": {
    "dependencies": ["module", "require"],
    "map": {}
  },
  ...
}
Liferay.MAPS = {
  ...
  'my-bundle-package@1.0.0': { value: 'my-bundle-package@1.0.0/lib/index', exactMatch: true}
  'isobject@2.1.0': { value: 'isobject@2.1.0/index', exactMatch: true},
  'isarray@2.0.0': { value: 'isarray@2.0.0/index', exactMatch: true},
  'isarray@1.0.0': { value: 'isarray@1.0.0/index', exactMatch: true},
  ...
}
Note:
- The Liferay.PATHSproperty describes paths to the JavaScript module files.
- The Liferay.MODULESproperty describes the dependency names and versions of each module.
- The Liferay.MAPSproperty describes the aliases of the package’s main modules.