protobufjs使用教程,支持proto文件打包成typescript或javascript脚本

时间:2024-03-12 21:34:39

官方链接:https://docs.cocos.com/creator/manual/zh/scripting/modules/example.html

第一步,安装nodejs。(自行安装)

安装教程可参考 https://www.runoob.com/nodejs/nodejs-install-setup.html

第二步,创建cocos新项目,在新项目根目录(assets同级目录)下打开命令行。

通过 npm 安装 protobufjs 并将它写入项目目录下的 package.json 的依赖项。

在项目目录命令行中执行以下命令:

npm install --save protobufjs

通过 npm 安装 protobufjs--cli 并将它写入项目目录下的 package.json 的依赖项。

npm install --save protobufjs-cli

第三步,在项目目录下新建 Proto 目录并定义几个 proto 文件。

// pkg1.proto

package pkg1;
syntax = "proto2";
message Bar {
    required int32 bar = 1;
}

// pkg2.proto

package pkg2;
syntax = "proto2";
message Baz {
    required int32 baz = 1;
}

// unpkg.proto 不属于任何的包

syntax = "proto2";
message Foo {
    required int32 foo = 1;
}

第四部,增加默认导出。

在项目目录下创建一个 Tools/wrap-pbts-result.js 文件,脚本代码如下:

const fs = require('fs');
  const ps = require('path');
  const file = ps.join(__dirname, '..', 'Protojs', 'proto.d.ts');
  const original = fs.readFileSync(file, { encoding: 'utf8' });
  fs.writeFileSync(file, `
  namespace proto {
      ${original}
  }
  export default proto;
  `);

第五部,在 package.json 中定义。

"scripts": {
    "build-proto:pbjs": "pbjs --dependency protobufjs/minimal.js --target static-module --wrap commonjs --out ./Protojs/proto.js ./Proto/*.proto",
    "build-proto:pbts": "pbts --main --out ./Protojs/proto.d.ts ./Protojs/*.js && node ./Tools/wrap-pbts-result.js"
  }

第六部,在项目目录打开命令行,安装pbjs和pbts。

npm install -g pbjs
npm install -g pbts

第七部,运行package.json中的两个脚本。

"build-proto:pbjs": "pbjs --dependency protobufjs/minimal.js --target static-module --wrap commonjs --out ./Protojs/proto.js ./Proto/*.proto"
"build-proto:pbts": "pbts --main --out ./Protojs/proto.d.ts ./Protojs/*.js && node ./Tools/wrap-pbts-result.js"

即可在Protojs文件夹中生成需要的文件。

将文件导入工程中,即可在工程中引用。