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 ) {
id = addExtension( id );
id = addExtension( id, '.myext' );
}
};
}
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( code, {
ecmaVersion: 6,
sourceType: 'module'
});
let scope = attachScopes( ast, 'scope' );
walk( ast, {
enter ( node ) {
if ( node.scope ) scope = node.scope;
if ( !scope.contains( 'foo' ) ) {
}
},
leave ( node ) {
if ( node.scope ) scope = scope.parent;
}
});
}
};
}
createFilter
import { createFilter } from 'rollup-pluginutils';
export default function myPlugin ( options = {} ) {
var filter = createFilter( options.include, options.exclude );
return {
transform ( code, id ) {
if ( !filter( id ) ) return;
}
};
}
makeLegalIdentifier
import { makeLegalIdentifier } from 'rollup-pluginutils';
makeLegalIdentifier( 'foo-bar' );
makeLegalIdentifier( 'typeof' );
dataToEsm
Helper for treeshakable data imports
import { dataToEsm } from 'rollup-pluginutils';
const esModuleSource = dataToEsm({
custom: 'data',
to: ['treeshake']
}, options = {
compact: false,
indent: '\t',
preferConst: false,
objectShorthand: false,
namedExports: true
});
License
MIT