UNPKG

magix-combine

Version:

合并Magix View的html,js,css成一个js文件,并检测html,js,css中可能存在的问题

77 lines (72 loc) 1.91 kB
/* 抽取模块id,如文件物理路径为'/users/xiglie/afp/tmpl/app/views/default.js' 则抽取出来的模块id是 app/vies/default */ let path = require('path'); let utils = require('./util'); let configs = require('./util-config'); let sep = path.sep; let sepRegTmpl = sep.replace(/\\/g, '\\\\'); let sepReg = new RegExp(sepRegTmpl, 'g'); let cssTailReg = /\.(?:css|less|scss)/i; let startSlashReg = /^\//; let extractModuleId = file => { let id = file.replace(configs.moduleIdRemovedPath, '') .replace(configs.jsFileExtNamesReg, '') .replace(cssTailReg, '') .replace(sepReg, '/') .replace(startSlashReg, ''); id = configs.resolveModuleId(id); return id; }; let isObject = o => typeof o == 'object'; let clone = object => { if (Array.isArray(object)) { let ta = []; for (let i = 0; i < object.length; i++) { ta[i] = clone(object[i]); } return ta; } else if (isObject(object)) { let temp = Object.create(null); for (let p in object) { temp[p] = clone(object[p]); } return temp; } return object; }; let cloneAssign = (dest, src) => { Object.assign(dest, clone(src)); }; let uId = (fix, str, withoutSuffix) => { let id; do { id = Math.random().toString(36).replace(/[\d\.]/g, ''); } while (~str.indexOf(id)); return (fix || '') + id + (withoutSuffix ? '' : (fix || '')); }; let hash = str => { str = str + ''; let hash = 5381, i = str.length; while (i) { hash = (hash * 33) ^ str.charCodeAt(--i); } return hash >>> 0; }; module.exports = { hash, clone, uId, cloneAssign, extractModuleId, isObject, isString(o) { return typeof o == 'string'; }, isFunction(o) { return typeof o == 'function'; }, isArray: Array.isArray, };