https://github.com/eploko/pegjs-loader
PEG.js loader for webpack
https://github.com/eploko/pegjs-loader
javascript loader peg pegjs pegjs-loader webpack webpack-loader
Last synced: about 1 month ago
JSON representation
PEG.js loader for webpack
- Host: GitHub
- URL: https://github.com/eploko/pegjs-loader
- Owner: eploko
- License: mit
- Created: 2014-11-17T16:15:02.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-08-27T19:53:46.000Z (9 months ago)
- Last Synced: 2025-04-09T21:08:57.996Z (about 1 month ago)
- Topics: javascript, loader, peg, pegjs, pegjs-loader, webpack, webpack-loader
- Language: JavaScript
- Homepage:
- Size: 450 KB
- Stars: 29
- Watchers: 3
- Forks: 15
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# [PEG.js](https://github.com/pegjs/pegjs) loader for [webpack](http://webpack.github.io/)
[](https://www.npmjs.com/package/pegjs-loader)
[](https://www.npmjs.com/package/pegjs-loader)## Install
`npm install --save-dev pegjs-loader pegjs webpack`
The pegjs-loader requires [PEG.js](https://github.com/pegjs/pegjs) and [webpack](https://github.com/webpack/webpack)
as [`peerDependency`](https://docs.npmjs.com/files/package.json#peerdependencies). Thus you are able to specify the required versions accurately.## Usage
[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)
``` js
var parser = require("!pegjs!./parser.pegjs");
// => returns compiled PEG.js parser
```### Apply via webpack config
It's recommended to adjust your `webpack.config` so `pegjs!` is applied automatically on all files ending with `.pegjs`:
``` js
module.exports = {
...
module: {
loaders: [
{
test: /\.pegjs$/,
loader: 'pegjs-loader'
}
]
}
};
```Then you only need to write: `require("./parser.pegjs")`.
### PEG.js options
You can pass options to PEG.js as [query parameters](http://webpack.github.io/docs/using-loaders.html#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`).``` js
module.exports = {
...
module: {
loaders: [
{
test: /\.pegjs$/,
loader: 'pegjs-loader?cache=true&optimize=size&allowedStartRules[]=RuleA,allowedStartRules[]=RuleB&trace=true'
}
]
}
};
```## Change Log
This project adheres to [Semantic Versioning](http://semver.org/).
Every release, along with the migration instructions, if any, is documented on the Github [Releases](https://github.com/eploko/pegjs-loader/releases) page.## Thanks
* [Victor Homyakov](https://github.com/victor-homyakov) for the propagation of the `cache` option.
* [VladimirTechMan](https://github.com/VladimirTechMan) for the propagation of the `optimize` option and updating things to be compatible with PEG.js 0.10.0.
* [ragtime](https://github.com/ragtime) for the propagation of the `allowedStartRules` and `trace` options.
* [Jan Varwig](https://github.com/janv) for the Webpack 2 compatibility fix.
* [retorquere](https://github.com/retorquere) for the propagation of the `dependencies` option.## License
MIT (http://www.opensource.org/licenses/mit-license.php)