@lwc/babel-plugin-component
Summary
This babel plugin does the following transform:
- Global decorator transform:
- Transform
@api decorator to publicProperties and publicMethods static properties.
- Transform
@wire decorator to wire static property.
- Transform
@track decorator to track static property.
- LWC component class sugar syntax:
- Check for misspelled lifecycle hooks.
- Import and inject
render from a collocated template if a component class doesn't already implement a render method.
- Optimization:
- If the compiler inject the default template a component, it will also wire the template style to the component.
Installation
npm install babel @lwc/babel-plugin-component
Usage
const babel = require('@babel/core');
const lwcPlugin = require('@lwc/babel-plugin-component');
const source = `
import { LightningElement } from 'lwc';
export default class extends LightningElement {}`;
const { code } = babel.transformSync(source, {
plugins: [
[
lwcPlugin,
{
},
],
],
});
Options
name (type: string, optional) - name of the component, e.g. foo in x/foo.
namespace (type: string, optional) - namepace of the component, e.g. x in x/foo.
isExplicitImport (type: boolean, optional) - true if this is an explicit import.
dynamicImports (type: object, optional) - see below:
loader (type: string, optional) - loader to use at runtime.
strictSpecifier (type: boolean, optional) - true if a strict specifier should be used.
instrumentation (type: InstrumentationObject, optional) - instrumentation object to gather metrics and non-error logs for internal use. See the @lwc/errors package for details on the interface.
apiVersion (type: number, optional) - API version to associate with the compiled component.