插件 es-javascript

这是一个基础转换插件,所有js相关的语法转换插件都依赖于它

选项配置

在初始化工程时会根据选择的插件自动生成选项配置。

es.config.js

module.exports = {
plugins:[{
    name:"es-javascript",
    options:{
        //使用webpack打包构建
        webpack:false,  
        //指定编译时的保护关键字
        reserved:[], 
        //构建指定以何种方式构建js模块
        module:'es',
        //是否生成文件,webpack 为true时无效
        emitFile:false, 
        //生成文件时的后缀
        suffix:'.js', 
        //是否为严格模式
        strict:true, 
        //是否使用babel 转换
        babel:false, 
        //默认全局类的命名空间,如果在生成文件时会当作目录名
        ns:'core',
        //开发模式下的热更新支持,需要打包工具的支持
        hot:false,
        //是否生成源码映射
        sourceMaps:false,
        //是否生使用绝对路径导入,使用打包工具时应该为true
        useAbsolutePathImport:true,
        //在生成页面路由时,如果没有明确指定路由路径时是否需要使用模块的空间名
        routePathWithNamespace:{
            //在生成服务端路由时
            server:false,
            //在生成客户端页面路由时
            client:true,
        },
        //构建模式
        mode:process.env.NODE_ENV || 'production', //production,development
        //编译宏在编译时需要读取的属性值,此配置直接影响编译宏对构建代码的结果
        metadata:{
            env:{
                NODE_ENV:process.env.NODE_ENV || 'production'
            }
        },
        //格式化
        formation:{
            /**
            * 需要对路由进行格式化,常用的是统一大小写或者特定格式
            *@type function (url, {
            *    action:string,
            *    pathArg:string,
            *    method:string,
            *    params:string,
            *    className:string
            * }):string
            */
            route:null
        },
        //在配置多个语法插件时,是否需要对跨依赖进行检查,防止在当前语法插件时出现不支持的表达式
        crossDependenciesCheck:true,
        //配置当前语法插件的上文
        context:{
            //一个正则表达式判断文件路径的数组。如果有配置并且有匹配则会把匹配的所有文件设置为当前插件的专用域
            include:null,
            //一个正则表达式判断文件路径的数组。如果有配置并且有匹配则会把匹配的所有文件排除当前插件的专用域
            exclude:null,
            //如果设置为true,在引用表达式描述时只能在当前插件的作用域中使用,在其它插件使用时会报错
            only:false
        },
        //编译时的勾子选项, 对插件开发者有用
        hooks:{
            //给指定的注解符添加勾子
            annotations:{
                /**
                * 对应的注解符 compiling:invoke-hooks-assign-value 
                * assignmentValue(ctx, stack, {annotation, desc, type}):Token
                */
                assignmentValue:()=>null
            }
        },
        //编译成原始JSX语法选项, 对插件开发者有用
        rawJsx:{
            enable:false,
            jsx:false,
            delimit:{
                expression:{
                    left:'{{',
                    right:'}}'
                },
                attrs:{
                    left:'"',
                    right:'"'
                }
            },
            component:{
                prefix:'',
                resolve:null
            }
        },
        //是否启用私有链,如果设置为false 对设置为 private 的属性或者方法不会隔离,如同public和protected 修饰符一致。子类如果和父类有相同属性名时子类会覆盖父类
        enablePrivateChain:true,
        //在引用一个对象表达式时如果没有指定this关键字是否自动补全
        thisComplete:true,
        //定位一个指定资源
        resolve:{
            //定位导入资源标识
            imports:{},
            //定位资源文件的目录
            folders:{}
        },
        //标记导入的资源是否为外部依赖,在生成构建文件时会根据这个配置来决定是否需要生成文件
        dependences:{
            externals:[],
            includes:[],
            excludes:[],
        }

    }

}]}