Headless provides exports through multiple sub-packages.
A sub-package groups together exports (i.e. engine, controllers, action loaders, selectors, types, utilities) that work together as a cohesive unit. By separating exports into sub-packages, it becomes clear to users of Headless what exports are available to build a specific use-case.
In the headless/src directory, create an entry file for your new sub-package (e.g. headless/src/case-assist.index.ts). Everything you export from this file will be part of the public API of your sub-package.
In headless/esbuild.mjs, Configure NodeJS add entries for your new sub-package in the useCaseEntries object and getUmdGlobalName function map.
// headless/esbuild.mjs
// ...
const useCaseEntries = {
search: 'src/index.ts',
recommendation: 'src/recommendation.index.ts',
'case-assist': 'src/case-assist.index.ts',
// ...
};
// ...
function getUmdGlobalName(useCase) {
const map = {
search: 'CoveoHeadless',
recommendation: 'CoveoHeadlessRecommendation',
'case-assist': 'CoveoHeadlessCaseAssist',
// ...
};
// ...
}
In headless/package.json, add an entry point for your sub-package in the exports object.
// headless/package.json
// ...
"exports": {
// ...
"./case-assist": {
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/case-assist/headless.esm.js",
"require": "./dist/case-assist/headless.cjs",
"default": "./dist/case-assist/headless.esm.js"
},
// ...
}
```
turbo build --filter=@coveo/headless./packages/headless directory, run npm pack.npm i <path to the tarball>.import {...} from '@coveo/headless/<sub-package>'That's all!