protobufjs-loader-fork
Version:
Webpack loader to translate .proto definitions to ProtoBuf.js modules
89 lines (75 loc) • 2.88 kB
Markdown
[](https://github.com/tarc/protobufjs-loader-fork/actions/workflows/release.yml)
[](https://github.com/semantic-release/semantic-release)
Webpack loader to translate
[](https://github.com/google/protobuf/) definitions to
[](https://github.com/dcodeIO/ProtoBuf.js/)
modules. Equivalent to running your definitions through the [pbjs
CLI](https://github.com/protobufjs/protobuf.js/tree/master/cli).
This allows you to use the light or minimal ProtoBuf.js distributions
without an explicit compile step in your build pipeline.
```sh
npm install --save-dev protobufjs-loader-fork
```
```javascript
// webpack.config.js
module.exports = {
// ...
module: {
rules: [{
test: /\.proto$/,
use: {
loader: 'protobufjs-loader-fork',
options: {
/* Import paths provided to pbjs.
*
* default: webpack import paths (i.e. config.resolve.modules)
*/
paths: ['/path/to/definitions'],
/* Additional command line arguments passed to pbjs.
*
* default: []
*/
pbjsArgs: ['--no-encode'],
/* Enable Typescript declaration file generation via pbts.
*
* Declaration files will be written every time the loader runs.
* They'll be saved in the same directory as the protobuf file
* being processed, with a `.d.ts` extension.
*
* This only works if you're using the 'static-module' target
* for pbjs (i.e. the default target).
*
* The value here can be a config object or a boolean; set it to
* true to enable pbts with default configuration.
*
* default: false
*/
pbts: {
/* Additional command line arguments passed to pbts.
*/
args: ['--no-comments'],
},
/* Set the "target" flag to pbjs.
*
* default: 'static-module'
*/
target: 'json-module',
}
}
}]
}
};
```
```javascript
// myModule.js
/* replaces e.g.:
*
* const protobuf = require('protobufjs/light');
* const jsonDescriptor = require('json!my/compiled/protobuf.js');
* const Root = protobuf.Root.fromJSON(jsonDescriptor);
*/
const Root = require('my/protobuf.proto');
```