function getSettings(options) {
    let settings = options || {};
    
    _.defaults(settings, {
        sort: false,
        filename: 'checkstyle.xml',
        outputDir: '',
        severity: 'error',
        pathBase: '',
        pathPrefix: ''
    });
    
    if (settings.pathBase) {
        settings.pathBase = upath.normalize(settings.pathBase);
    }
    
    if (settings.pathPrefix) {
        settings.pathPrefix = upath.normalize(settings.pathPrefix);
    }

    if (settings.outputDir) {
        settings.outputDir = upath.normalize(settings.outputDir);
    }
    
    return settings;
}
示例#2
0
export function patchOption (_options) {
  const _default = settings;

  var options = deepMerge( _default, _options );

  if (!options.theme.id) throw new Error('Missing theme id');
  if (!options.account.id) throw new Error('Missing app id');
  if (!options.account.token) throw new Error('Missing app token');
  if (!options.account.url) throw new Error('Missing app url');

  options.account.protocol = (options.account.http) ? 'http://' : 'https://';

  options.theme.root = upath.normalize(path.resolve(options.theme.root));

  const VRegExp = new RegExp(/^http.*:[www]*\/\//);
  const VResult = _options.account.url.replace(VRegExp, '');

  options.account.url = VResult.replace('/', '');
  options.handle = `${_.split(options.account.url, '.', 1)}-${options.theme.id}` ;
  options.pathBackup = upath.normalize(options.theme.root + '/backup');
  options.themeUrl = options.account.protocol + options.account.url + '/?theme_preview=' + options.theme.id

  options.insalesApi = {
    id: options.account.id,
    secret: options.account.token,
    http: options.account.http
  }

  return options;
}
示例#3
0
        return scripts[0].attribs['data-js'].split(',').map(function (test) {
            test = test.trim();

            if (file === DEFAULT_FILE) {
                test = path.join('test', 'suites', test);
            } else {
                var testPath = path.resolve('/', file, '..');
                test = path.join(testPath, test);
            }

            var normalizedTestPath = upath.normalize(test);
            return normalizedTestPath;
        });
    return through.obj(function(file, enc, cb) {
    var extName = nodejsPath.extname(file.path);
        switch(extName){
            case ".js":{
                var filePath = nodejsPath.normalize(file.path);
                var moduleContent = handleFile(filePath,filePath,config).moduleContent;
                // 替换入口文件里面的入口js,加上md5
                if(config.mainJsReplace && !config.debug) {
                    if(filePath == config.mainJsReplace.mainJSPath) {
                        var replaceFilePath = config.mainJsReplace.replaceFilePath;
                        var indexHtmlContent = fs.readFileSync(replaceFilePath).toString();
                        indexHtmlContent = indexHtmlContent.replace(
                            config.mainJsReplace.replaceString, 
                            config.mainJsReplace.replaceString + "_" + md5HashManager.get(filePath) 
                        );
                        fs.writeFileSync(replaceFilePath, indexHtmlContent);
                    }
                }
                //console.log(file.path+"---"+"start");
                if(!config.debug) {
                    var skip = false;
                    config.minifyExclude.forEach(function(excludePath){
                        if(new RegExp(excludePath).test(file.path)) {
                            skip = true;
                        }
                    });
                    if(!skip) {
                        try{
                            moduleContent = minify_js(moduleContent);
                        }catch(e){
                            console.log("压缩文件" + filePath + "时出现错误,请检查错误,未能成功压缩", e.toString());
                        }
                    }
                }
                file.contents=new Buffer(moduleContent);
                var reg = new RegExp(nodejsPath.extname(file.path) + "$");
                var oldPath = file.path.replace(/\\/g, "/");
                file.path = file.path.replace(reg, "_"
                    + md5HashManager.get(oldPath)
                    + nodejsPath.extname(file.path));
                

                //console.log(file.path+"---"+"ok");
        }
    }
    cb(null,file);
  });
示例#5
0
export function getAssetPath (paths, _type, _name, _ext, _task) {
  var task = _task || {};
  var _assets = paths.assets;
  var _folders = paths.folders;
  var _mediaExtension = paths.mediaExtension;
  var basePath = _assets[_type]['folder'];
  if (task.isAssetsPath) {
    if (_type === 'Asset::Media') {
      basePath = _folders['media'];
      if (_mediaExtension[_ext]) {
        basePath = _mediaExtension[_ext];
      }
      if (_name.indexOf('.svg') > -1) {
        basePath = _mediaExtension['.svg'];
      }
      if (_name.indexOf('.scss') > -1) {
        basePath = _mediaExtension['.scss'];
      }
      if (_name.indexOf('.css') > -1) {
        basePath = _mediaExtension['.css'];
      }
      if (_name.indexOf('.js') > -1) {
        basePath = _mediaExtension['.js'];
      }
      if (_name.indexOf('.coffee') > -1) {
        basePath = _mediaExtension['.coffee'];
      }
      if (_name.indexOf('.js.liquid') > -1) {
        basePath = _mediaExtension['.js'];
      }
      if (_name.indexOf('.svg.liquid') > -1) {
        basePath = _mediaExtension['.svg'];
      }
      if (_name.indexOf('.css.liquid') > -1) {
        basePath = _mediaExtension['.css'];
      }
      if (_name.indexOf('.scss.liquid') > -1) {
        basePath = _mediaExtension['.css'];
      }
    }
  }

  return upath.normalize(basePath + _name);
}
function getReportedFilePath(settings, vinyl) {
    let result = upath.normalize(vinyl.path);
    
    if (settings) {
        if (settings.pathBase) {
            const index = result.indexOf(settings.pathBase);
            if (index > 0) {
                result = result.substr(index + settings.pathBase.length);
            }
        }
        
        if (settings.pathPrefix) {
            result = path.join(settings.pathPrefix, result);
        }
    }
    
    if (path.sep === path.win32.sep) {
        result = result.replace(/\//, path.win32.sep);
    }
    
    return result;
}
/*
@param fileName 当前文件名
@param moduleName 模块名
*/
function getModulePath(fileName,moduleName,config){
    var replaced = false;
    if((moduleName.indexOf("./")==0||moduleName.indexOf("../")==0)&&moduleName.indexOf("/")!=0){
        var moduleFilePath = fileName +"/"+ moduleName;
    }else{
        for(var i in config.modulePath){
            if(replaced){
                break;
            }
            var pathsReg = new RegExp("^" + i);
            if(pathsReg.test(moduleName)){
                replaced = true;
                moduleName = moduleName.replace(pathsReg,config.modulePath[i]);
            }
        }
        var moduleFilePath = config.basePath +"/" +moduleName;
    }
    if(!/(css|js|tpl)$/.test(nodejsPath.extname(moduleFilePath))){
        moduleFilePath = moduleFilePath+".js";
    }
    return nodejsPath.normalize(moduleFilePath);
}
    return through.obj(function(file, enc, cb) {
    var extName = nodejsPath.extname(file.path);
        switch(extName){
            case ".js":{
                var filePath = nodejsPath.normalize(file.path);
                var moduleContent = handleFile(filePath,filePath,config).moduleContent;
                console.log(file.path+"---"+"start");
                if(file.path.indexOf("angular")==-1&&file.path.indexOf("ckeditor")==-1){
                    try{
                        moduleContent = minify_js(moduleContent);
                    }catch(e){
                        console.log(filePath);
                        console.log(e.toString());
                    }

                }
                console.log(file.path+"---"+"ok");
                file.contents=new Buffer(moduleContent);
        }
    }
    cb(null,file);
  });
示例#9
0
export function getPaths (options) {
  const pathsDefault = {};
  pathsDefault.folders = {};
  pathsDefault.root = options.theme.root;

  pathsDefault.foldersDefaults = {
    'template': options.theme.root+'/templates/',
    'snippets': options.theme.root+'/snippets/',
    'config': options.theme.root+'/config/',
    'media_root': options.theme.root+'/media/'
  }

  pathsDefault.foldersAssets = {
      'style': options.theme.root+'/assets/style/',
      'script': options.theme.root+'/assets/js/',
      'img': options.theme.root+'/assets/img/',
      'svg': options.theme.root+'/assets/svg/',
      'media': options.theme.root+'/assets/media/',
      'fonts': options.theme.root+'/assets/fonts/'
    }

    normalizePaths(pathsDefault.foldersDefaults);
    normalizePaths(pathsDefault.foldersAssets);

    pathsDefault.folders = _.merge(pathsDefault.foldersAssets, pathsDefault.foldersDefaults);

    normalizePaths(pathsDefault.folders);

    pathsDefault.toWatch = getExcludeFiles(options);

    _.forEach(pathsDefault.folders, function(folder) {
      var _seeFolder = `${folder}*.*`;
      pathsDefault.toWatch.push(_seeFolder)
    });

    pathsDefault.mediaExtension = {
      '.css': pathsDefault.folders['style'],
      '.scss': pathsDefault.folders['style'],
      '.css.liquid': pathsDefault.folders['style'],
      '.scss.liquid': pathsDefault.folders['style'],
      '.coffee': pathsDefault.folders['script'],
      '.js': pathsDefault.folders['script'],
      '.js.liquid': pathsDefault.folders['script'],
      '.svg': pathsDefault.folders['svg'],
      '.svg.liquid': pathsDefault.folders['svg'],
      '.jpeg': pathsDefault.folders['img'],
      '.jpg': pathsDefault.folders['img'],
      '.gif': pathsDefault.folders['img'],
      '.ico': pathsDefault.folders['img'],
      '.png': pathsDefault.folders['img'],
      '.ttf': pathsDefault.folders['fonts'],
      '.woff': pathsDefault.folders['fonts'],
      '.woff2': pathsDefault.folders['fonts'],
      '.otf': pathsDefault.folders['fonts'],
      '.eot': pathsDefault.folders['fonts']
    }

    pathsDefault.assets = {
      'Asset::Template': {
        'extension': '.liquid',
        'backup': upath.normalize(`${options.theme.root}/backup/templates/`),
        'folder': pathsDefault.folders['template']
      },
      'Asset::Snippet': {
        'extension': '.liquid',
        'backup': upath.normalize(`${options.theme.root}/backup/snippets/`),
        'folder': pathsDefault.folders['snippets']
      },
      'Asset::Configuration': {
        'extension': ['.json', '.html'],
        'backup': upath.normalize(`${options.theme.root}/backup/config/`),
        'folder': pathsDefault.folders['config']
      },
      'Asset::Media': {
        'extension': ['.css', '.js', '.coffee', '.jpeg', '.gif', '.png', '.svg', '.scss', '.js.liquid', '.css.liquid', '.scss.liquid'],
        'backup': upath.normalize(`${options.theme.root}/backup/media/`),
        'folder': pathsDefault.folders['media_root']
      }
    }

  return pathsDefault;
}
示例#10
0
 _.forEach(paths, (folder, index) => {
   paths[index] = upath.normalize(folder)
 });
示例#11
0
 .map(line => path.normalize(line));
示例#12
0
 ], (error, files) => error ? reject(error) : resolve(files.map(file => path.normalize(file)))));
示例#13
0
 ignored = ignored.map(function (path) {
   if (typeof path !== 'string') return path;
   return upath.normalize(isAbsolute(path) ? path : sysPath.join(cwd, path));
 });
示例#14
0
 .map((fileName) => {
   const file = upath.normalize(fileName).replace(upath.join(process.cwd(), '/node_modules/'), '');
   return file.startsWith("@") ? file.split("/").slice(0, 2).join("/") : file.split("/")[0];
 })
示例#15
0
  return new Promise(function (resolve, reject) {

    const options = conf.get('options');
    const paths = conf.get('paths');
    const downloadList = conf.get('downloadList');
    const eventEmitter = conf.get('eventEmitter');

    for (var i = 0; i < assets.length; i++) {

      var asset = assets[i];
      var _type = asset.type;
      var _name = asset.name;
      var _nameSplit = _name.split('.');
      var _folders = paths.folders;
      var _assets = paths.assets;
      var _mediaExtension = paths.mediaExtension;
      var _isAssets = options.theme.assets;

      asset.isMedia = false;
      asset.pathMedia = '';
      asset.folder = upath.normalize( _assets[_type]['folder'] );
      asset.backup = upath.normalize( _assets[_type]['backup'] );

      if (_type === 'Asset::Template' || _type === 'Asset::Snippet') {
        var _extension = _assets[_type]['extension'];
        if (_name.indexOf(_extension) === -1) {
          asset['name'] = _name + _extension;
        }
        asset['queue'] = 1;
      }else{
        asset['queue'] = 2;
      }

      if (_type === 'Asset::Media') {
        asset.isMedia = true;
        asset['folder'] = _folders['media'];

        if (asset['content-type'] === 'text/js') {
          asset['folder'] = _mediaExtension['.js']
        }
        if (asset['content-type'] === 'text/css') {
          asset['folder'] = _mediaExtension['.css']
        }
        if (asset['content-type'] === 'application/x-scss') {
          asset['folder'] = _mediaExtension['.scss']
        }
        if (asset['content-type'] === 'application/x-svg') {
          asset['folder'] = _mediaExtension['.svg']
        }
        if (asset['content-type'].indexOf('image') > -1) {
          asset['folder'] = _folders['img'];
        }
        if (asset['content-type'] === 'application/x-ico') {
          asset['folder'] = _folders['img'];
        }
        if (_name.indexOf('.svg') > -1) {
          asset['folder'] = _mediaExtension['.svg'];
        }
        if (_name.indexOf('.scss') > -1) {
          asset['folder'] = _mediaExtension['.scss'];
        }
        if (_name.indexOf('.css') > -1) {
          asset['folder'] = _mediaExtension['.css'];
        }
        if (_name.indexOf('.js') > -1) {
          asset['folder'] = _mediaExtension['.js'];
        }
        if (_name.indexOf('.coffee') > -1) {
          asset['folder'] = _mediaExtension['.coffee'];
        }
        if (_name.indexOf('.js.liquid') > -1) {
          asset['folder'] = _mediaExtension['.js'];
        }
        if (_name.indexOf('.svg.liquid') > -1) {
          asset['folder'] = _mediaExtension['.svg'];
        }
        if (_name.indexOf('.css.liquid') > -1) {
          asset['folder'] = _mediaExtension['.css'];
        }
        if (_name.indexOf('.scss.liquid') > -1) {
          asset['folder'] = _mediaExtension['.css'];
        }
        if (asset['content-type'].indexOf('application') > -1) {
          var _ext = '.' + _nameSplit[_nameSplit.length - 1];
          if (_mediaExtension[_ext]) {
            asset['folder'] = _mediaExtension[_ext]
          }
        }
      }

      asset.path = upath.normalize( asset.folder + asset['name'] );
      asset.pathKey = upath.normalize( asset.folder + asset['name'] );
      asset.backupPath = asset.backup + asset['name'];


      if (_type === 'Asset::Media') {
        asset.pathMedia = upath.normalize( _folders['media_root'] + asset['name'] );
        asset.pathKey = upath.normalize( _folders['media_root'] + asset['name'] );
      }

      if (asset['name'].indexOf('/') > -1 || asset['name'].indexOf('@') > -1) {
        eventEmitter.emit('file:error', {
          message: `Недопустимое имя файла: ${asset['name']}`
        });
      }
      ownerAssets[asset.pathKey] = asset;
      downloadList.push(asset);
    }

    conf.set('assets', ownerAssets)
    conf.set('downloadList', downloadList)

    resolve()
    if (assets.length === 0) {
      reject()
    }
  })