配置文件结构

##文件结构

fjpublish命令行默认会读取当前工作目录下的fjpublish.config.js文件,该文件返回一个对象,结构如下:

module.exports = {
    //modules开始
    modules: [{
        name: '测试环境',
        env: 'test',
        ssh: {
            host: '12.23.345.678',
            port: 22,
            username: 'root',
            //rc版本的user选项和userName选项请在未来统一配置为username
            password: '12345678',
        },
        buildCommand: 'build',
        localPath: 'example',
        remotePath: '/www/example',
        tag: '123'
    }, { ... }],
    //modules结束
    nobuild: true,
    tag: 'v1',
}

以上展示了一个简单的配置,关于使用fjpublish和阅读本文档,还需明白以下几个概念:

  • modules数组中每一个对象(也称module)代表一个发布环境,在本文档中module指在配置文件中任意一个环境配置module。module实例指实例化后的module,也就是最终在中间件或钩子函数中取值的module。

  • 在本文档中config指代module.exports输出的所有字段(包含modules在内)的对象。

  • config中modules字段外的字段在初始后将并入每一个module,优先级为module > config,也可以理解为module继承自config

  • 在本文档中metadata也称为元数据,指代由config实例化后的对象,在每一个中间件或钩子函数中以this._metadata的方式访问,也就是说config中modules外定义的字段不仅仅为了继承给module实例也可以是为了定义全局的配置字段。

举一个简单的中间件读取数据例子就明白了,以上文配置为例:

module.exports = function builder(module, env, next){
    console.log(env)  //'test'
    console.log(module.tag)  //'123'
    console.log(this._metadata.tag)  //'v1'
    console.log(module.nobuild)  //true
    next();
}