summaryrefslogtreecommitdiff
path: root/@linaria/packages/babel/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to '@linaria/packages/babel/src/index.ts')
-rw-r--r--@linaria/packages/babel/src/index.ts45
1 files changed, 45 insertions, 0 deletions
diff --git a/@linaria/packages/babel/src/index.ts b/@linaria/packages/babel/src/index.ts
new file mode 100644
index 0000000..048fe58
--- /dev/null
+++ b/@linaria/packages/babel/src/index.ts
@@ -0,0 +1,45 @@
+/**
+ * File defines babel prest for Linaria.
+ * It uses ./extract function that is an entry point for styles extraction.
+ * It also bypass babel options defined in Linaria config file with it's defaults (see ./utils/loadOptions).
+ */
+import type { ConfigAPI, TransformCaller } from '@babel/core';
+
+import { debug } from '@linaria/logger';
+import type { PluginOptions } from './utils/loadOptions';
+import loadOptions from './utils/loadOptions';
+
+export * as EvalCache from './eval-cache';
+export { default as buildOptions } from './evaluators/buildOptions';
+export { default as JSXElement } from './evaluators/visitors/JSXElement';
+export { default as ProcessCSS } from './evaluators/visitors/ProcessCSS';
+export { default as ProcessStyled } from './evaluators/visitors/ProcessStyled';
+export { default as Module } from './module';
+export {
+ default as transform,
+ extractCssFromAst,
+ shouldTransformCode,
+} from './transform';
+export * from './types';
+export type { PluginOptions } from './utils/loadOptions';
+export { default as isNode } from './utils/isNode';
+export { default as getVisitorKeys } from './utils/getVisitorKeys';
+export { default as peek } from './utils/peek';
+export { default as slugify } from './utils/slugify';
+export { default as CollectDependencies } from './visitors/CollectDependencies';
+export { default as DetectStyledImportName } from './visitors/DetectStyledImportName';
+export { default as GenerateClassNames } from './visitors/GenerateClassNames';
+
+function isEnabled(caller?: TransformCaller & { evaluate?: true }) {
+ return caller?.name !== 'linaria' || !caller.evaluate;
+}
+
+export default function linaria(babel: ConfigAPI, options: PluginOptions) {
+ if (!babel.caller(isEnabled)) {
+ return {};
+ }
+ debug('options', JSON.stringify(options));
+ return {
+ plugins: [[require('./extract'), loadOptions(options)]],
+ };
+}