简介
使用基本上与脚手架vue-cli2.x
搭建的项目中使用protobuf
的使用方法相同
具体参考:Vue项目中使用protobuf
本文只列出有区别的地方
proto.js
Typescript
中直接引用生成的src/proto/proto.js
文件,会报错误。我们需要给这个文件写一个声明文件
- 修改
package.json
文件,添加proto
命令(这是生成src/proto/proto.js
文件的命令)
{
// ...
"scripts": {
// ...
"proto": "pbjs -t json-module -w commonjs -o src/proto/proto.js src/proto/*.proto",
// ...
},
// ...
}
- 修改
package.json
文件,添加protots
命令(这是生成声明文件的命令)
{
// ...
"scripts": {
// ...
"proto": "pbjs -t json-module -w commonjs -o src/proto/proto.js src/proto/*.proto",
"protots": "pbjs -t static-module src/proto/*.proto | pbts -o src/proto/bundle.d.ts -",
// ...
},
// ...
}
-
当
proto
文件有修改时,将所有的proto
文件复制到src/proto/
目录, -
然后执行命令
npm run proto
生成src/proto/proto.js
文件, -
然后再执行命令
npm run protots
生成Typescipt
需要的声明文件src/proto/bundle.d.ts
-
修改
src/types/global.d.ts
文件(代码中引用proto.js
时,这么引用import protoRoot from '@/proto/proto'
)
// ...
declare module '@/proto/proto'
// ...
yaml文件
yaml
文件在vue-cli2.x
搭建的项目中是通过yaml-loader
处理的
这里换一种方式:使用js-yaml
将yaml
文件转成json
文件,项目中引入生成json
文件
- 在
src/api/
目录下新建yamltojson.js
文件
const yaml = require('js-yaml')
const fs = require('fs')
const path = require('path')
tranformBuf()
tranformTcp()
function resolve (dir) {
return path.join(__dirname, dir)
}
function tranformBuf() {
try {
var data = yaml.safeLoad(fs.readFileSync(resolve('protobuf.yaml'), 'utf8'));
// let str = JSON.stringify(data)
let str = JSON.stringify(data, "", "\t")
fs.writeFile(resolve('protobuf.json'), str, 'utf8', function(err) {
if (err) throw err
})
} catch (e) {
console.log(e)
}
}
function tranformTcp() {
try {
var data = yaml.safeLoad(fs.readFileSync(resolve('prototcp.yaml'), 'utf8'));
// let str = JSON.stringify(data)
let str = JSON.stringify(data, "", "\t")
fs.writeFile(resolve('prototcp.json'), str, 'utf8', function(err) {
if (err) throw err
})
} catch (e) {
console.log(e)
}
}
- 修改
package.json
文件,添加命令yaml
{
// ...
"scripts": {
// ...
"proto": "pbjs -t json-module -w commonjs -o src/proto/proto.js src/proto/*.proto",
"protots": "pbjs -t static-module src/proto/*.proto | pbts -o src/proto/bundle.d.ts -",
"yaml": "node src/api/yamltojson"
// ...
},
// ...
}
-
当
yaml
文件有修改时,将其复制到src/api/
目录, -
然后执行命令
npm run yaml
生成对应的json
文件 -
修改
src/types/global.d.ts
文件(代码中引用json
时,这么引用import yamlBuf from './protobuf.json'
)
// ...
declare module "*.json" {
const value: any;
export default value;
}
// ...
发表评论