npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

egf-protobuf

v1.3.7

Published

这是一个protobuf静态js文件生成工具

Downloads

4

Readme

egf protobuf

特性

  1. 提供 protobuf.js 基础运行时库
  2. 提供命令行脚本,将 protofile 生成 JavaScript 代码
  3. 生成正确的 .d.ts 代码,以方便 TypeScript 项目使用
  4. 理论上支持所有 HTML5 游戏引擎。欢迎使用 PIXI.js , Cocos2d-js , LayaAir 等其他引擎的开发者使用本库。
  5. 封装protobufjs的命令行,不需另外安装protobufjs
  6. 支持服务端文件同时输出
  7. 配置有智能提示

原理

封装了 protobufjs 库及命令行。使用 protobufjs 6.8.4 的运行时库和命令行工具。

protobufjs 自身存在着 pbts 命令,虽然也可以生成 .d.ts 文件,但是在全局模式而非 ES6 module 的情况下存在一些错误,本项目致力于解决这个问题,使 protobufjs 可以在非 ES6 模块项目中(比如白鹭引擎,LayaAir引擎,Cocoscreator引擎)中也可以使用 protobufjs

protobufjs 提供了多种使用方式,由于微信小游戏禁止 eval , new Function 等动态代码形式,所以本项目只提供了生成代码的形式,不支持通过 protobuf.load('awesome.proto') 的方式(因为这种方式也无法在微信小游戏中运行)。

如何安装

npm install egf-protobuf -g
或者
npm install -S egf-protobuf

如何使用

  • 假设用户有个名为 project 的项目

    cd projectRoot
    egf-pb init //初始化项目
  • 将 protofile 文件放在 projectRoot/protobuf/protofile 文件夹中

  • 配置protobuf/epbconfig.js文件 配置类型

declare type EgfProtobufConfig = {
    /**protobufjs 编译选项 */
    options: {
        /**
         * Does not generate create functions used for reflection compatibility.
         * 不生成用于反射兼容性的create函数。
         * 默认 false
         */
        "no-create": boolean,
        /**
         * Does not generate verify functions.
         * 不生成 verify函数和代码
         * false
         */
        "no-verify": boolean,
        /**
         * Does not generate convert functions like from/toObject
         * 不生成转换函数 像这种 from/toObject
         * 默认true
         */
        "no-convert": boolean,
        /**
         * Does not generate delimited encode/decode functions.
         * 不生成带分隔符的encode/decode函数。
         * 默认false
         */
        "no-delimited": boolean
    },
    /**是否合并protobufjs库,即在输出protobuf proto文件的静态js时合并上protobuf的js库 */
    concatPbjsLib: boolean
    /**库类型 
     * 默认minimal ,暂不支持使用其他类型
     * full 支持所有特性
     * light light库的预构建浏览器版本,适合与反射、静态代码和JSON描述符/模块一起使用。
     * minimal 包含预构建的浏览器版本的最小库,只适合与静态生成的代码一起使用。
     * */
    libType: "full" | "light" | "minimal"
    /**pbjs库输出文件夹,concatPbjsLib为false时有效,不填就不输出 */
    pbjsLibDir?: string
    /**输出protojs文件类型  0 全部(js和.min.js)1(js) 2(.min.js)*/
    outputFileType: 0 | 1 | 2,
    
    /**.proto 文件夹路径  */
    sourceRoot: string,
    /**输出js文件名 */
    outFileName: string,
    
    /**生成js的输出路径 */
    outputDir: string
    /**声明文件输出路径 */
    dtsOutDir: string,
    
    /**是否使用压缩库,默认false */
    isUseMinLib: boolean
    /**服务端输出配置 */
    serverOutputConfig: {
        /**protobufjs库输出目录 */
        pbjsLibDir: string,
        /**生成的proto js文件输出 */
        pbjsOutDir: string,
        /**声明文件输出路径 */
        dtsOutDir: string
    }


}
  • 使用生成命令

    egf-pb generate 或者 egf-pb g

CHANGELOG

已知问题

proto 文件中的每一个协议一定要从属于一个 package,否则.d.ts生成会出现错误导致 ts 文件无法正确的找到这些类