PEG.js loader for webpack
npm install --save-dev pegjs-loader pegjs webpack
The pegjs-loader requires PEG.js and webpack
as peerDependency
. Thus you are able to specify the required versions accurately.
var parser = require("!pegjs!./parser.pegjs");
// => returns compiled PEG.js parser
It's recommended to adjust your webpack.config
so pegjs!
is applied automatically on all files ending with .pegjs
:
module.exports = {
...
module: {
loaders: [
{
test: /\.pegjs$/,
loader: 'pegjs-loader'
}
]
}
};
Then you only need to write: require("./parser.pegjs")
.
You can pass options to PEG.js as query parameters. The following options are supported:
allowedStartRules
- The rules the built parser will be allowed to start
parsing from (default: the first rule in the grammar).
cache
— If true
, makes the parser cache results, avoiding exponential
parsing time in pathological cases but making the parser slower (default:
false
).
dependencies
- Parser dependencies, the value is an object which maps variables used to access the
dependencies in the parser to module IDs used to load them (default: {}
).
optimize
- Whether to optimize the built parser either for speed
or
size
(default: speed
).
trace
- If true
, the tracing support in the built parser is enabled
(default: false
).
module.exports = {
...
module: {
loaders: [
{
test: /\.pegjs$/,
loader: 'pegjs-loader?cache=true&optimize=size&allowedStartRules[]=RuleA,allowedStartRules[]=RuleB&trace=true'
}
]
}
};
This project adheres to Semantic Versioning.
Every release, along with the migration instructions, if any, is documented on the Github Releases page.
cache
option.optimize
option and updating things to be compatible with PEG.js 0.10.0.allowedStartRules
and trace
options.dependencies
option.