Webpack loader that parses .proto
files and converts them to a protobuf.js modules. It build on top of protobuf.js CLI and could be handy integrate into your current build flow.
npm install --save-dev proto-pbjs-loader
// webpack.config.js
module.exports = {
...
module: {
rules: [{
test: /\.proto$/,
use: {
loader: 'proto-pbjs-loader',
/*
* Config is optional.
*/
options: {
/*
* controls the "target" flag to pbjs - true for
* json-module, false for static-module.
* default: false
*/
json: false,
/*
* 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, see https://github.com/dcodeIO/ProtoBuf.js/#pbjs-for-javascript
* for a list of what's available.
* default: []
*/
pbjsArgs: ['--no-encode'],
/*
* Additional build targets, wich will bundled in root object.
* Some times it helpful if pb.js throws error
* when try to resolve type
* default: []
*/
additionalTargets: ['/path/to/additional/definitions']
}
}
}]
}
};
// 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');
npm run lint # linting
npm run test # testing
Fresh up and fully refactored version of protobufjs-loader. Compatable with webpack 3 and 4.
Active maintenance with care and ❤️.
Feel free to send a PR.