LWC Compiler
Summary
@lwc/compiler is an open source project that enables developers to take full control of processing a single Lightning Web Components module for runtime consumption.
Installation
npm install @lwc/compiler
APIs
transformSync
Transform the content of individual file.
import { transformSync } from '@lwc/compiler';
const source = `
import { LightningElement } from 'lwc';
export default class App extends LightningElement {}
`;
const filename = 'app.js';
const options = {
namespace: 'c',
name: 'app',
};
const { code } = transformSync(source, filename, options);
Parameters:
source
(string, required) - the source to be transformed. Can be the content of a JavaScript, HTML, or CSS file.filename
(string, required) - the source filename with extension.options
(object, required) - the transformation options. The name
and the namespace
of the component is a minimum required for transformation.
name
(type: string
, required) - name of the component, e.g. foo
in x/foo
.namespace
(type: string
, required) - namespace of the component, e.g. x
in x/foo
.stylesheetConfig
(type: object
, default: {}
) - Deprecated. Ignored by compiler.experimentalDynamicComponent
(type: DynamicImportConfig
, default: null
) - The configuration to pass to @lwc/compiler
.experimentalDynamicDirective
(type: boolean
, default: false
) - The configuration to pass to @lwc/template-compiler
to enable deprecated dynamic components.enableDynamicComponents
(type: boolean
, default: false
) - The configuration to pass to @lwc/template-compiler
to enable dynamic components.outputConfig
(type: object
, optional) - see below:
sourcemap
(type: boolean
| 'inline'
, optional) - if true
, a sourcemap is generated for the transformed file. If 'inline'
, an inline sourcemap is generated and appended to the transformed file.minify
(type: boolean
, optional, deprecated) - this option has no effect.
experimentalComplexExpressions
(type: boolean
, optional) - set to true to enable use of (a subset of) JavaScript expressions in place of template bindings. Passed to @lwc/template-compiler
.isExplicitImport
(type: boolean
, optional) - true if this is an explicit import, passed to @lwc/babel-plugin-component
.preserveHtmlComments
(type: boolean
, default: false
) - The configuration to pass to the @lwc/template-compiler
.scopedStyles
(type: boolean
, optional) - True if the CSS file being compiled is a scoped stylesheet. Passed to @lwc/style-compiler
.enableStaticContentOptimization
(type: boolean
, optional) - True if the static content optimization should be enabled. Passed to @lwc/template-compiler
.customRendererConfig
(type: object
, optional) - custom renderer config to pass to @lwc/template-compiler
. See that package's README for details.enableLightningWebSecurityTransforms
(type: boolean
, default: false
) - The configuration to enable Lighting Web Security specific transformations.enableLwcSpread
(boolean, optional, true
by default) - Deprecated. Ignored by compiler. lwc:spread
is always enabled.disableSyntheticShadowSupport
(type: boolean
, default: false
) - Set to true if synthetic shadow DOM support is not needed, which can result in smaller/faster output.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 module.
Return
code
(string) - the compiled source code.map
(object) - the generated source map.warnings
(array, optional) - the array of diagnostic warnings, if any.cssScopeTokens
(array, optional) - String tokens used for style scoping in synthetic shadow DOM and *.scoped.css
(as either attributes or classes), if any.
transform
(deprecated)
Deprecated asynchronous equivalent of transformSync
.
version
import { version } from '@lwc/compiler';
console.log(version);
Return
version
(string) - the current version of the compiler ex: 0.25.1
.