Configuration
CLI Options
| Command/option | Type | Description | Example |
|---|---|---|---|
| analyze | Analyze your components | ||
| --config | string | Path to custom config location | `--config "../custom-elements-manifest.config.js"` |
| --globs | string[] | Globs to analyze | `--globs "foo.js"` |
| --exclude | string[] | Globs to exclude | `--exclude "foo.js"` |
| --outdir | string | Directory to output the Manifest to | `--outdir dist` |
| --watch | boolean | Enables watch mode, generates a new manifest on file change | `--watch` |
| --dev | boolean | Enables extra logging for debugging | `--dev` |
| --litelement | boolean | Enable special handling for LitElement syntax | `--litelement` |
| --fast | boolean | Enable special handling for FASTElement syntax | `--fast` |
| --stencil | boolean | Enable special handling for Stencil syntax | `--stencil` |
| --catalyst | boolean | Enable special handling for Catalyst syntax | `--catalyst` |
Config File
You can specify a custom custom-elements-manifest.config.mjs configuration file that allows the following properties:
custom-elements-manifest.config.mjs:
import { myAwesomePlugin } from 'awesome-plugin';
export default {
/** Globs to analyze */
globs: ['src/**/*.js'],
/** Globs to exclude */
exclude: ['src/foo.js'],
/** Directory to output CEM to */
outdir: 'dist',
/** Run in dev mode, provides extra logging */
dev: true,
/** Run in watch mode, runs on file changes */
watch: true,
/** Enable special handling for litelement */
litelement: true,
/** Enable special handling for catalyst */
catalyst: false,
/** Enable special handling for fast */
fast: false,
/** Enable special handling for stencil */
stencil: false,
/** Provide custom plugins */
plugins: [
myAwesomePlugin()
],
/** Overrides default module creation: */
overrideModuleCreation: ({ts, globs}) => {
const program = ts.createProgram(globs, defaultCompilerOptions);
const typeChecker = program.getTypeChecker();
return program.getSourceFiles().filter(sf => globs.find(glob => sf.fileName.includes(glob)));
},
}
Config types:
interface userConfigOptions {
globs: string[],
exclude: string[],
outdir: string,
dev: boolean,
watch: boolean,
litelement: boolean,
catalyst: boolean,
fast: boolean,
stencil: boolean,
plugins: Array<() => Plugin>,
overrideModuleCreation: ({ts: TypeScript, globs: string[]}) => SourceFile[]
}
Custom config location
Using the --config flag in the CLI you can supply a custom path to your configuration file as follows:
cem analyze --config "../configs/custom-elements-manifest.js"