Example #1
0
module.exports = function(ret, conf, settings, opt){
    console.log('parser-coffee:');

    var pack = fis.config.get('coffee.pack', {});
    var options = fis.config.get('coffee.settings', {});
    var content = '';
    var has_arr = [];

    if(pack.files && pack.files.length){
        pack.files.forEach(function(path){


            var file = ret.src['/' + path.replace(/^\//, '')];
            if(file){
                console.log("• " + file.subpath);
                has_arr.push(file.subpath);

                content += file.getContent() + '\n';
                if(opt.pack) {      //打包时不发布源文件
                    file.release = false;
                    delete ret.src[file.subpath];
                }
            } else {
                fis.log.warning('missing file [' + path + ']');
            }
        });
    }

    //create pack file
    var file = fis.file(fis.project.getProjectPath(pack.release || '/pkg/coffee.js'));
    options.filename = file.subpath;
    content = coffee.compile(content, options);
    if(options.sourceMap) {
        var sourceMap = JSON.stringify(content.sourceMap);
        if(opt.optimize && opt.pack){     //优化 且 打包 时,生成map文件
            var sourceMapFile = fis.file(file.realpathNoExt + '.map');
            sourceMapFile.setContent(sourceMap);
            ret.pkg[sourceMapFile.subpath] = sourceMapFile;
            //content.js += '//@ sourceMappingURL=' + sourceMapFile.getUrl(opt.hash, opt.domain);
        }
        content = content.js;
    }
    file.setContent(content);
    fis.compile(file);

    if(opt.optimize && opt.pack) {     //优化 且 打包 时,写入map链接
        content = file.getContent() + '//@ sourceMappingURL=' + sourceMapFile.getUrl(opt.hash, opt.domain);
        file.setContent(content);
    }
    ret.pkg[file.subpath] = file;

    //修改map.json文件
//    ret.map = fis.config.get('browser.map');
    ret.map.pkg[pack.release.substring(pack.release.lastIndexOf('/')+1) ] = {
        'uri':pack.release,
        'type':'js',
        'has':has_arr
    };
};
Example #2
0
module.exports = function(ret, conf, settings, opt){
    console.log('concat-maxcms:');

    var VAR_REG = /<%=(.*)%>/;

    var pack_opt = fis.config.get('maxcms-pack');
    var content='';
    var has_arr = [];
    for(var item in pack_opt){
        content='';

        var _files = pack_opt[item].files;
        for(var i in _files){
            var _filepath = _files[i];

            if(VAR_REG.test(_filepath)){
                _filepath = _filepath.match(VAR_REG)[1];
                _filepath = fis.config.get(_filepath);

                var file = ret.pkg[_filepath];
                if(file){
                    content += file.getContent();
                }
            }else{
                var file = fis.file(fis.project.getProjectPath(_filepath));
                if(file){
                    content += file.getContent();
                }
            }

            has_arr.push( _filepath.replace(/^\//,'') );
        }

        if(content){
            var file = fis.file(fis.project.getProjectPath(pack_opt[item].release));
            file.setContent(content);
            fis.compile(file);
            ret.pkg[file.subpath] = file;
            console.log("• ".green + file.subpath);

//            ret.map.pkg[item] = {
//                'uri': pack_opt[item].release,
//                'type':'js',
//                'has':has_arr
//            };
            ret.map.res[ pack_opt[item].release.replace(/^\//,'') ] = {
                'uri': opt.hash ? file.getUrl(opt.hash, opt.domain) : pack_opt[item].release,
                'type':'js',
                'has':has_arr
            };
        }
    }
};