Newtonian Physics Mockumentary

    rollup-pluginutils
    TypeScript icon, indicating that this package has built-in type declarations

    1.5.2 • Public • Published

    rollup-pluginutils

    A set of functions commonly used by Rollup plugins.

    Installation

    npm install --save rollup-pluginutils

    Usage

    addExtension

    import { addExtension } from 'rollup-pluginutils';
     
    export default function myPlugin ( options = {} ) {
      return {
        resolveId ( code, id ) {
          // only adds an extension if there isn't one already
          id = addExtension( id ); // `foo` -> `foo.js`, `foo.js -> foo.js`
          id = addExtension( id, '.myext' ); // `foo` -> `foo.myext`, `foo.js -> `foo.js`
        }
      };
    }

    attachScopes

    This function attaches Scope objects to the relevant nodes of an AST. Each Scope object has a scope.contains(name) method that returns true if a given name is defined in the current scope or a parent scope.

    See rollup-plugin-inject or rollup-plugin-commonjs for an example of usage.

    import { attachScopes } from 'rollup-pluginutils';
    import { parse } from 'acorn';
    import { walk } from 'estree-walker';
     
    export default function myPlugin ( options = {} ) {
      return {
        transform ( code ) {
          const ast = parse( ast, {
            ecmaVersion: 6,
            sourceType: 'module'
          });
     
          let scope = attachScopes( ast, 'scope' );
     
          walk( ast, {
            enter ( node ) {
              if ( node.scope ) scope = node.scope;
     
              if ( !scope.contains( 'foo' ) ) {
                // `foo` is not defined, so if we encounter it,
                // we assume it's a global
              }
            },
            leave ( node ) {
              if ( node.scope ) scope = scope.parent;
            }
          });
        }
      };
    }

    createFilter

    import { createFilter } from 'rollup-pluginutils';
     
    export default function myPlugin ( options = {} ) {
      // `options.include` and `options.exclude` can each be a minimatch
      // pattern, or an array of minimatch patterns, relative to process.cwd()
      var filter = createFilter( options.include, options.exclude );
     
      return {
        transform ( code, id ) {
          // if `options.include` is omitted or has zero length, filter
          // will return `true` by default. Otherwise, an ID must match
          // one or more of the minimatch patterns, and must not match
          // any of the `options.exclude` patterns.
          if ( !filter( id ) ) return;
     
          // proceed with the transformation...
        }
      };
    }

    makeLegalIdentifier

    import { makeLegalIdentifier } from 'rollup-pluginutils';
     
    makeLegalIdentifier( 'foo-bar' ); // 'foo_bar'
    makeLegalIdentifier( 'typeof' ); // '_typeof'

    License

    MIT

    Keywords

    Install

    npm i rollup-pluginutils@1.5.2

    Version

    1.5.2

    License

    MIT

    Last publish

    Collaborators

    • guybedford
    • rich_harris
    • lukastaegert
    • shellscape