How to use the exportNamedDeclaration function from @babel/types

Find comprehensive JavaScript @babel/types.exportNamedDeclaration code examples handpicked from public code repositorys.

@babel/types.exportNamedDeclaration is a Babel plugin that generates a named export declaration for a given variable declaration.

124
125
126
127
128
129
130
131
132
133
  let hasExport = false;
  path.node.body.forEach(node => {
    hasExport = hasExport || t.isExportDeclaration(node);
  });
  if (!hasExport) {
    const exportNode = t.exportNamedDeclaration();
    t.addComment(exportNode, 'trailing', 'The above line is generated by conditional compilation, when no export detected after CC.');
    path.node.body.push(exportNode);
  }
}
fork icon37
star icon93
watch icon131

4
5
6
7
8
9
10
11
12
13
/*:: const { Union, Field, Interface, Method } = require('../store')*/


class TypeScriptBuilder extends AbstractJsBuilder {
  buildUnion(object/*: Union */) {
    const ast = bt.exportNamedDeclaration(
      bt.tSTypeAliasDeclaration(
        bt.identifier(object.name),
        undefined,
        bt.tSUnionType(object.variants.map((name) => (
fork icon9
star icon40
watch icon4

+ 11 other calls in file

How does @babel/types.exportNamedDeclaration work?

@babel/types.exportNamedDeclaration is a plugin for the Babel JavaScript compiler that generates a named export declaration for a given variable declaration.

When a variable is declared in a module, it is not automatically available to other modules unless it is explicitly exported. The exportNamedDeclaration plugin allows you to automatically generate a named export declaration for a given variable declaration, simplifying the process of sharing variables between modules.

To use the plugin, you must first install it as a dependency in your project:

sql
npm install @babel/types --save-dev

You can then configure Babel to use the plugin by adding it to your Babel configuration file (usually .babelrc):

perl
{ "plugins": [ "@babel/types/exportNamedDeclaration" ] }

Once the plugin is configured, you can use it to generate named export declarations for your variable declarations. For example, the following code:

arduino
const myVar = "Hello, World!";

Can be transformed by the exportNamedDeclaration plugin into:

arduino
export const myVar = "Hello, World!";

This allows other modules to import the myVar variable using a named import declaration:

javascript
import { myVar } from './my-module';

Overall, the exportNamedDeclaration plugin provides a convenient way to generate named export declarations for your variable declarations, simplifying the process of sharing variables between modules and improving the modularity and maintainability of your code.

54
55
56
57
58
59
60
61
62
63
const contractName =
  changeCase.camelCase(name) + changeCase.pascalCase(status[code].code);
const contract = responses[code].content
  ? createContract(responses[code].content['application/json'].schema)
  : createNullContract();
const ast = t.exportNamedDeclaration(
  t.variableDeclaration('const', [
    t.variableDeclarator(t.identifier(contractName), contract),
  ]),
);
fork icon2
star icon14
watch icon2

+ 29 other calls in file

71
72
73
74
75
76
77
78
79
80
/*
 * Export `addTest` and `createAsyncTestListener` as named exports
 * so they can be used in async tests
 */
path.pushContainer('body', [
    t.exportNamedDeclaration(null, [
        t.exportSpecifier(
            t.identifier('addTest'),
            t.identifier('addTest')
        ),
fork icon2
star icon15
watch icon2

+ 7 other calls in file

Ai Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const babel = require("@babel/core");
const t = require("@babel/types");

const code = `const myVar = "Hello, World!";`;

const ast = babel.parseSync(code);
const declaration = ast.program.body[0];

const exportDeclaration = t.exportNamedDeclaration(declaration);

ast.program.body[0] = exportDeclaration;

const output = babel.transformFromAstSync(ast, code);

console.log(output.code); // "export const myVar = "Hello, World!";"

In this example, we first import the @babel/core and @babel/types modules using require. We then define a string code containing a variable declaration. Next, we parse the code using the parseSync method of @babel/core, which returns an abstract syntax tree (AST) representing the code. We extract the variable declaration from the AST by accessing the program.body[0] property. We then use the exportNamedDeclaration function of @babel/types to generate a named export declaration for the variable declaration. We replace the original variable declaration in the AST with the generated export declaration. Finally, we use the transformFromAstSync method of @babel/core to transform the modified AST back into code. The output of the script will be "export const myVar = "Hello, World!";", which is a valid named export declaration for the myVar variable. This example demonstrates how @babel/types.exportNamedDeclaration can be used to generate named export declarations for variable declarations in a programmatic way.

140
141
142
143
144
145
146
147
148

function getExportNodeForProp(propName) {
  const identifier = t.identifier(propName);
  const vDeclarator = t.variableDeclarator(identifier);
  const vDeclaration = t.variableDeclaration('let', [vDeclarator]);
  const namedExport = t.exportNamedDeclaration(vDeclaration, [], null);

  return namedExport;
}
fork icon1
star icon8
watch icon3

+ 9 other calls in file

385
386
387
388
389
390
391
392
393
394
// Check if this name is reserved, if so, then bail out.
if (check(name)) {
  return;
}

const decl = t.exportNamedDeclaration(
  t.variableDeclaration("let", [
    t.variableDeclarator(
      path.node.left.property,
      t.memberExpression(
fork icon0
star icon1
watch icon1

+ 58 other calls in file

59
60
61
62
63
64
65
66
67
68

/**
 * export type {A, B, C}
 */
function exportTypes(names: $ReadOnlyArray<string>): $FlowFixMe {
  const res = t.exportNamedDeclaration(
    undefined,
    names.map(name =>
      t.exportSpecifier(t.identifier(name), t.identifier(name)),
    ),
fork icon0
star icon1
watch icon1

+ 3 other calls in file

383
384
385
386
387
388
389
390
391
        declaration.node.id = declaration.scope.generateUidIdentifier('default');
    }
}
else {
    const id = declaration.scope.generateUidIdentifier('default');
    const namedDecl = babelTypes.exportNamedDeclaration(null, [
        babelTypes.exportSpecifier(babelTypes.identifier(id.name), babelTypes.identifier('default')),
    ]);
    namedDecl._blockHoist = child.node._blockHoist;
fork icon1
star icon0
watch icon1

60
61
62
63
64
65
66
67
68
69
t.program([
  t.importDeclaration(
    exportNames.map((n) => t.importSpecifier(t.identifier(n), t.identifier(n))),
    t.stringLiteral(source)
  ),
  t.exportNamedDeclaration(
    t.variableDeclaration('const', [
      t.variableDeclarator(
        t.identifier(nsName),
        t.objectExpression(
fork icon0
star icon0
watch icon1

+ 224 other calls in file

Other functions in @babel/types

Sorted by popularity

function icon

@babel/types.identifier is the most popular function in @babel/types (20936 examples)