code based on peggy-loader for webpack.
npm install vite-plugin-peggy-loader
The pegjs-loader requires peggy
as peerDependency
. Thus you are able to specify the required version accurately.
Apply the loader by adjusting your vite.config
so .pegjs
is automatically transformed to .js
import peggyLoader from "vite-plugin-peggy-loader";
export default defineConfig({
plugins: [peggyLoader()]
});
Then to use the compiled version import it like:
import * as grammer from './grammer.pegjs'
You can pass options to PEG.js in the config, below is the supported options:
-
allowedStartRules
- The rules the built parser will be allowed to start parsing from (default: the first rule in the grammar). -
cache
— Iftrue
, 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 forspeed
orsize
(default:speed
). -
trace
- Iftrue
, the tracing support in the built parser is enabled (default:false
).
import peggyLoader from "peggy-loader";
export default defineConfig({
plugins: [
peggyLoader({
cache: false,
optimizeParser: 'speed',
trace: false,
dependencies: {},
allowedStartRules: []
})
]
});
This project adheres to Semantic Versioning.
-
Victor Homyakov for the propagation of the
cache
option. -
VladimirTechMan for the propagation of the
optimize
option and updating things to be compatible with PEG.js 0.10.0. -
ragtime for the propagation of the
allowedStartRules
andtrace
options. - Jan Varwig for the Webpack 2 compatibility fix.
-
retorquere for the propagation of the
dependencies
option.