Babel syntax plugin that enables parsing of class properties in JavaScript code
npx @tessl/cli install tessl/npm-babel-plugin-syntax-class-properties@6.13.0babel-plugin-syntax-class-properties is a minimal Babel syntax plugin that enables parsing of class properties in JavaScript code. It extends Babel's parser capabilities by adding support for the classProperties syntax plugin, allowing developers to use class property declarations before they are transformed by other Babel plugins.
npm install babel-plugin-syntax-class-propertiesThis plugin is imported through Babel configuration, not directly as a module:
Via .babelrc:
{
"plugins": ["syntax-class-properties"]
}Via CLI:
babel --plugins syntax-class-properties script.jsVia Node API:
require("babel-core").transform("code", {
plugins: ["syntax-class-properties"]
});// Input JavaScript with class properties
class MyClass {
// Instance property
instanceProperty = "default value";
// Static property
static staticProperty = "static value";
// Private property (parsed but not transformed)
#privateProperty = "private value";
}The plugin tells Babel's parser to recognize this syntax without transforming it. The actual transformation would be handled by separate transformation plugins.
This is a syntax-only plugin that works during Babel's parsing phase:
The plugin modifies Babel's parser options to include class property syntax recognition, enabling other plugins to work with class property AST nodes.
The main export is a factory function that returns a Babel plugin configuration object.
/**
* Default export function that creates a Babel plugin configuration
* @returns {BabelPlugin} Babel plugin configuration object
*/
export default function(): BabelPlugin;
interface BabelPlugin {
manipulateOptions(opts: any, parserOpts: ParserOptions): void;
}
interface ParserOptions {
plugins: string[];
}The plugin implements the manipulateOptions hook to modify Babel's parser configuration.
/**
* Babel plugin hook that modifies parser options to include class property syntax
* @param {any} opts - Babel transformation options (unused by this plugin)
* @param {ParserOptions} parserOpts - Babel parser options containing plugins array
* @returns {void}
*/
manipulateOptions(opts: any, parserOpts: ParserOptions): void;Implementation Details:
"classProperties" string to the parserOpts.plugins arrayclass A { prop = value; }class A { static prop = value; }class A { #private = value; }Configuration Examples:
Babel configuration file (.babelrc):
{
"plugins": ["syntax-class-properties"]
}Programmatic usage with babel-core:
const babel = require("babel-core");
const result = babel.transform(sourceCode, {
plugins: ["syntax-class-properties"]
});Important Notes: