UNPKG

magix-composer

Version:

compile html, style and javascript files into javascript

105 lines (93 loc) 4.1 kB
/* 初始化各种文件夹的配置项,相对转成完整的物理路径,方便后续的使用处理 */ let path = require('path'); let configs = require('./util-config'); let globReg = require('./util-globreg'); let crypto = require('crypto'); let reservedReplacer = { top: 1, bottom: 1, src: 1, global: 1, ref: 1, names: 1, str: 1, base64: 1, html: 1, style: 1 }; module.exports = () => { if (!configs.$inited) { configs.$inited = 1; configs.commonFolder = path.resolve(configs.commonFolder); configs.compiledFolder = path.resolve(configs.compiledFolder); configs.rootFolder = configs.rootFolder ? path.resolve(configs.rootFolder) : configs.commonFolder; configs.jsFileExtNamesReg = new RegExp('\\.(?:' + configs.jsFileExtNames.join('|') + ')$'); configs.jsOrCssFileExtNamesReg = new RegExp('\\.(?:' + configs.jsFileExtNames.join('|') + '|css|less|scss)$'); configs.moduleIdRemovedPath = configs.commonFolder; //把路径中开始到模板目录移除就基本上是模块路径了 if (configs.projectName === null) { let str = crypto.createHash('sha512') .update(configs.commonFolder, 'ascii') .digest('hex'); configs.projectName = 'x' + str.substring(0, 4); } let tmplExtNames = configs.tmplFileExtNames; let names = tmplExtNames.slice(); if (names.indexOf('mx') == -1) { names.push('mx'); } configs.tmplFileExtNamesReg = new RegExp('\\.(?:' + names.join('|') + ')$'); configs.htmlFileReg = new RegExp('(?:compiled)?@(?:mx:)?[^\'"\\s@]+\\.(?:' + tmplExtNames.join('|') + ')'); configs.htmlFileGlobalReg = new RegExp(configs.htmlFileReg, 'g'); //模板处理,即处理view.html文件 configs.fileTmplReg = new RegExp('([\'"`])(compiled)?\\x12@(?:mx:)?([^\'"\\s@]+)\\.(' + tmplExtNames.join('|') + ')\\1', 'g'); let rsPrefix = configs.revisableStringPrefix; if (!rsPrefix) { rsPrefix = '_'; } configs.revisableStringPrefix = rsPrefix; let revisableStringMapReserved = {}, revisableStringMap = configs.revisableStringMap; for (let p in revisableStringMap) { revisableStringMapReserved[revisableStringMap[p]] = 1; } configs.revisableStringMapReserved = revisableStringMapReserved; let galleryPrefixes = Object.create(null); for (let p in configs.galleries) { if (p.endsWith('Root')) { galleryPrefixes[p.slice(0, -4)] = 1; } else if (p.endsWith('Map')) { galleryPrefixes[p.slice(0, -3)] = 1; } } configs.galleryPrefixes = galleryPrefixes; // let componentPrefixes = Object.create(null); // for (let p in configs.components) { // if (p.endsWith('Root')) { // componentPrefixes[p.slice(0, -4)] = 1; // } // } // configs.componentPrefixes = componentPrefixes; configs.selectorKeepNameReg = /(--)[\w-]+$/; configs.selectorDSEndReg = /--$/; configs.galleriesDynamicRequires = Object.create(null); configs.excludesReg = []; for (let ex of configs.excludes) { configs.excludesReg.push(globReg(ex)); } let replacer = configs.fileReplacerPrefixes; for (let r of replacer) { if (reservedReplacer[r] === 1) { throw new Error('MXC-Error(util-init) reserved:' + r); } } replacer.push('str', 'base64', 'style', 'html'); configs.fileReplacerPrefixesReg = new RegExp(`(?:${replacer.join('|')})@[\\w\\.\\-\\/\\\\]+`); configs.fileReplacerPrefixesHolderReg = new RegExp(`([\`"'])(${replacer.join('|')})\\x12@(?:mx:)?([\\w\\.\\-\\/\\\\]+)\\1`, 'g'); if (configs.loaderType == 'module' && configs.moduleAddVirtualRootToId === null) { configs.moduleAddVirtualRootToId = true; } } };