Take a look how Magento 2 itself did this in Magento_Base
modules' composer.json, inside extra
key. I was able to utilise the same syntax for a php library in one of my modules. For reference, I just pasted that chunk of code below:
"extra": {
"component_paths": {
"trentrichardson/jquery-timepicker-addon": "lib/web/jquery/jquery-ui-timepicker-addon.js",
"components/jquery": [
"lib/web/jquery.js",
"lib/web/jquery/jquery.min.js",
"lib/web/jquery/jquery-migrate.js"
],
"blueimp/jquery-file-upload": "lib/web/jquery/fileUploader",
"components/jqueryui": "lib/web/jquery/jquery-ui.js",
"twbs/bootstrap": "lib/web/jquery/jquery.tabs.js",
"tinymce/tinymce": "lib/web/tiny_mce"
},
"map": [
[
".htaccess",
".htaccess"
],
[
".htaccess.sample",
".htaccess.sample"
],
[
".php_cs",
".php_cs"
],
[
".travis.yml",
".travis.yml"
],
[
".user.ini",
".user.ini"
],
[
"CHANGELOG.md",
"CHANGELOG.md"
],
[
"CONTRIBUTING.md",
"CONTRIBUTING.md"
],
[
"COPYING.txt",
"COPYING.txt"
],
[
"Gruntfile.js.sample",
"Gruntfile.js.sample"
],
[
"ISSUE_TEMPLATE.md",
"ISSUE_TEMPLATE.md"
],
[
"LICENSE.txt",
"LICENSE.txt"
],
[
"LICENSE_AFL.txt",
"LICENSE_AFL.txt"
],
[
"app/.htaccess",
"app/.htaccess"
],
[
"app/autoload.php",
"app/autoload.php"
],
[
"app/bootstrap.php",
"app/bootstrap.php"
],
[
"app/design/adminhtml/Magento",
"app/design/adminhtml/Magento"
],
[
"app/design/frontend/Magento",
"app/design/frontend/Magento"
],
[
"app/etc/NonComposerComponentRegistration.php",
"app/etc/NonComposerComponentRegistration.php"
],
[
"app/etc/di.xml",
"app/etc/di.xml"
],
[
"app/functions.php",
"app/functions.php"
],
[
"bin/.htaccess",
"bin/.htaccess"
],
[
"bin/magento",
"bin/magento"
],
[
"dev/.htaccess",
"dev/.htaccess"
],
[
"dev/tests/api-functional/.gitignore",
"dev/tests/api-functional/.gitignore"
],
[
"dev/tests/api-functional/_files",
"dev/tests/api-functional/_files"
],
[
"dev/tests/api-functional/config",
"dev/tests/api-functional/config"
],
[
"dev/tests/api-functional/framework",
"dev/tests/api-functional/framework"
],
[
"dev/tests/api-functional/phpunit.xml.dist",
"dev/tests/api-functional/phpunit.xml.dist"
],
[
"dev/tests/api-functional/testsuite/Magento",
"dev/tests/api-functional/testsuite/Magento"
],
[
"dev/tests/functional/.gitignore",
"dev/tests/functional/.gitignore"
],
[
"dev/tests/functional/.htaccess.sample",
"dev/tests/functional/.htaccess.sample"
],
[
"dev/tests/functional/bootstrap.php",
"dev/tests/functional/bootstrap.php"
],
[
"dev/tests/functional/composer.json",
"dev/tests/functional/composer.json"
],
[
"dev/tests/functional/credentials.xml.dist",
"dev/tests/functional/credentials.xml.dist"
],
[
"dev/tests/functional/etc",
"dev/tests/functional/etc"
],
[
"dev/tests/functional/isolation.php",
"dev/tests/functional/isolation.php"
],
[
"dev/tests/functional/lib",
"dev/tests/functional/lib"
],
[
"dev/tests/functional/phpunit.xml.dist",
"dev/tests/functional/phpunit.xml.dist"
],
[
"dev/tests/functional/tests",
"dev/tests/functional/tests"
],
[
"dev/tests/functional/testsuites/Magento",
"dev/tests/functional/testsuites/Magento"
],
[
"dev/tests/functional/utils",
"dev/tests/functional/utils"
],
[
"dev/tests/integration/.gitignore",
"dev/tests/integration/.gitignore"
],
[
"dev/tests/integration/etc",
"dev/tests/integration/etc"
],
[
"dev/tests/integration/framework",
"dev/tests/integration/framework"
],
[
"dev/tests/integration/phpunit.xml.dist",
"dev/tests/integration/phpunit.xml.dist"
],
[
"dev/tests/integration/testsuite/Magento",
"dev/tests/integration/testsuite/Magento"
],
[
"dev/tests/integration/tmp",
"dev/tests/integration/tmp"
],
[
"dev/tests/js/JsTestDriver/.gitignore",
"dev/tests/js/JsTestDriver/.gitignore"
],
[
"dev/tests/js/JsTestDriver/framework",
"dev/tests/js/JsTestDriver/framework"
],
[
"dev/tests/js/JsTestDriver/jsTestDriver.php.dist",
"dev/tests/js/JsTestDriver/jsTestDriver.php.dist"
],
[
"dev/tests/js/JsTestDriver/jsTestDriverOrder.php",
"dev/tests/js/JsTestDriver/jsTestDriverOrder.php"
],
[
"dev/tests/js/JsTestDriver/run_js_tests.php",
"dev/tests/js/JsTestDriver/run_js_tests.php"
],
[
"dev/tests/js/JsTestDriver/testsuite/lib",
"dev/tests/js/JsTestDriver/testsuite/lib"
],
[
"dev/tests/js/JsTestDriver/testsuite/mage",
"dev/tests/js/JsTestDriver/testsuite/mage"
],
[
"dev/tests/js/jasmine",
"dev/tests/js/jasmine"
],
[
"dev/tests/static/.gitignore",
"dev/tests/static/.gitignore"
],
[
"dev/tests/static/framework",
"dev/tests/static/framework"
],
[
"dev/tests/static/get_github_changes.php",
"dev/tests/static/get_github_changes.php"
],
[
"dev/tests/static/phpunit-all.xml.dist",
"dev/tests/static/phpunit-all.xml.dist"
],
[
"dev/tests/static/phpunit.xml.dist",
"dev/tests/static/phpunit.xml.dist"
],
[
"dev/tests/static/testsuite/Magento",
"dev/tests/static/testsuite/Magento"
],
[
"dev/tests/unit/.gitignore",
"dev/tests/unit/.gitignore"
],
[
"dev/tests/unit/framework",
"dev/tests/unit/framework"
],
[
"dev/tests/unit/phpunit.xml.dist",
"dev/tests/unit/phpunit.xml.dist"
],
[
"dev/tests/unit/tmp",
"dev/tests/unit/tmp"
],
[
"dev/tools",
"dev/tools"
],
[
"dev/travis",
"dev/travis"
],
[
"index.php",
"index.php"
],
[
"lib/.htaccess",
"lib/.htaccess"
],
[
"lib/internal/LinLibertineFont",
"lib/internal/LinLibertineFont"
],
[
"lib/web/FormData.js",
"lib/web/FormData.js"
],
[
"lib/web/MutationObserver.js",
"lib/web/MutationObserver.js"
],
[
"lib/web/blank.html",
"lib/web/blank.html"
],
[
"lib/web/css",
"lib/web/css"
],
[
"lib/web/es6-collections.js",
"lib/web/es6-collections.js"
],
[
"lib/web/extjs",
"lib/web/extjs"
],
[
"lib/web/fonts",
"lib/web/fonts"
],
[
"lib/web/fotorama",
"lib/web/fotorama"
],
[
"lib/web/i18n",
"lib/web/i18n"
],
[
"lib/web/images",
"lib/web/images"
],
[
"lib/web/jquery.js",
"lib/web/jquery.js"
],
[
"lib/web/jquery",
"lib/web/jquery"
],
[
"lib/web/knockoutjs",
"lib/web/knockoutjs"
],
[
"lib/web/legacy-build.min.js",
"lib/web/legacy-build.min.js"
],
[
"lib/web/less",
"lib/web/less"
],
[
"lib/web/lib",
"lib/web/lib"
],
[
"lib/web/mage",
"lib/web/mage"
],
[
"lib/web/magnifier",
"lib/web/magnifier"
],
[
"lib/web/matchMedia.js",
"lib/web/matchMedia.js"
],
[
"lib/web/modernizr",
"lib/web/modernizr"
],
[
"lib/web/moment-timezone-with-data.js",
"lib/web/moment-timezone-with-data.js"
],
[
"lib/web/moment.js",
"lib/web/moment.js"
],
[
"lib/web/prototype",
"lib/web/prototype"
],
[
"lib/web/requirejs",
"lib/web/requirejs"
],
[
"lib/web/scriptaculous",
"lib/web/scriptaculous"
],
[
"lib/web/spacer.gif",
"lib/web/spacer.gif"
],
[
"lib/web/tiny_mce",
"lib/web/tiny_mce"
],
[
"lib/web/underscore.js",
"lib/web/underscore.js"
],
[
"lib/web/varien",
"lib/web/varien"
],
[
"nginx.conf.sample",
"nginx.conf.sample"
],
[
"package.json.sample",
"package.json.sample"
],
[
"php.ini.sample",
"php.ini.sample"
],
[
"phpserver",
"phpserver"
],
[
"pub/.htaccess",
"pub/.htaccess"
],
[
"pub/.user.ini",
"pub/.user.ini"
],
[
"pub/cron.php",
"pub/cron.php"
],
[
"pub/errors",
"pub/errors"
],
[
"pub/get.php",
"pub/get.php"
],
[
"pub/index.php",
"pub/index.php"
],
[
"pub/media/.htaccess",
"pub/media/.htaccess"
],
[
"pub/media/customer/.htaccess",
"pub/media/customer/.htaccess"
],
[
"pub/media/downloadable/.htaccess",
"pub/media/downloadable/.htaccess"
],
[
"pub/media/import",
"pub/media/import"
],
[
"pub/media/theme_customization/.htaccess",
"pub/media/theme_customization/.htaccess"
],
[
"pub/opt",
"pub/opt"
],
[
"pub/static.php",
"pub/static.php"
],
[
"pub/static/.htaccess",
"pub/static/.htaccess"
],
[
"setup",
"setup"
],
[
"var/.htaccess",
"var/.htaccess"
],
[
"vendor/.htaccess",
"vendor/.htaccess"
]
]
}
Hope this helps.