magix-combine
Version:
合并Magix View的html,js,css成一个js文件,并检测html,js,css中可能存在的问题
77 lines (72 loc) • 1.91 kB
JavaScript
/*
抽取模块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,
};