提交 ed08f034 编写于 作者: J JiM-W 提交者: yylgit

w完成icon路径解析

上级 e5a94ea6
......@@ -22,6 +22,7 @@
"chameleon-tool-utils": "0.4.0-alpha.0",
"consolidate": "0.14.0",
"de-indent": "1.0.2",
"fs-extra": "^7.0.1",
"hash-sum": "1.0.2",
"he": "1.1.0",
"jquery": "3.3.1",
......@@ -80,4 +81,4 @@
"license": "Apache",
"mail": "ChameleonCore@didiglobal.com",
"gitHead": "5ddcde4330774710f7646559446e008f7785ce00"
}
\ No newline at end of file
}
......@@ -236,6 +236,7 @@ module.exports = function (content) {
})
usingComponents = prepareParseUsingComponents(usingComponents);
//cml 编译出wxml模板
if (type !== 'app') {
let parseTemplate = parts.template && parts.template[0];
......@@ -268,9 +269,14 @@ module.exports = function (content) {
Object.keys(newJsonObj.usingComponents).forEach(key=>{
newJsonObj.usingComponents[key] = cmlUtils.handleSpecialChar(newJsonObj.usingComponents[key])
});
//处理tabbar中配置的icon路径
if(type == 'app'){
debugger;
miniAppScript.handleApptabbar(newJsonObj,self,filePath,context,cmlType)
}
let jsonResult = JSON.stringify(newJsonObj, '', 4);
self.emitFile(emitJsonPath, jsonResult);
//cml
parts.styles.forEach(function (style, i) {
//微信小程序在使用组件的时候 不支持属性选择器
......
......@@ -5,6 +5,7 @@ const babylon = require('@babel/parser');
const traverse = require('babel-traverse')["default"];
const t = require('@babel/types')
const cmlUtils = require('chameleon-tool-utils');
const fse = require('fs-extra');
/** *
* @param:loaderContext webpack loader的上下文
......@@ -165,3 +166,80 @@ _.commonParseScript = function(source, callback) {
}
})
}
_.handleApptabbar = function(newJsonObj, loaderContext, filePath, context, type) {
debugger
let tabbarIconPaths = _.getTabbarIconPaths(newJsonObj.tabBar, type);
if (tabbarIconPaths.length) {
tabbarIconPaths.forEach((item) => {
let rootDir = path.resolve(cml.projectRoot, `dist/${type}`);
let destIconPath = path.resolve(rootDir, item.finalPath); // 获取到要将icon拷贝的目录
let iconDir = path.dirname(destIconPath);
let sourceIconPath = path.resolve(filePath, item.originPath)
_.emitIcon(sourceIconPath, destIconPath, iconDir);
});
}
}
_.getRelativeIconPath = function(p) {
let fileName = path.parse(p).base;
return path.join('./icon', fileName)
}
_.getTabbarIconPaths = function(tabbar, type) {
let iconPaths = [];
debugger;
if (tabbar && (type === 'baidu' || type === 'wx')) {
(tabbar.list || []).forEach((item) => {
if (item.iconPath) {
let iconInfo = {};
iconInfo.originPath = item.iconPath;
item.iconPath = _.getRelativeIconPath(item.iconPath);
iconInfo.finalPath = item.iconPath;
iconPaths.push(iconInfo);
}
if (item.selectedIconPath) {
let iconInfo = {};
iconInfo.originPath = item.selectedIconPath;
item.selectedIconPath = _.getRelativeIconPath(item.selectedIconPath);
iconInfo.finalPath = item.selectedIconPath;
iconPaths.push(iconInfo);
}
})
}
if (tabbar && type === 'alipay') {
(tabbar.items || []).forEach((item) => {
if (item.icon) {
let iconInfo = {};
iconInfo.originPath = item.icon;
item.icon = _.getRelativeIconPath(item.icon);
iconInfo.finalPath = item.icon;
iconPaths.push(iconInfo);
}
if (item.activeIcon) {
let iconInfo = {};
iconInfo.originPath = item.activeIcon;
item.activeIcon = _.getRelativeIconPath(item.activeIcon);
iconInfo.finalPath = item.activeIcon;
iconPaths.push(iconInfo);
}
})
}
return iconPaths;
}
_.emitIcon = function(sourceFile, destIconPaht, dir) {
fse.ensureDir(dir).then(() => {
console.log('创建目录成功');
fse.copySync(sourceFile, destIconPaht)
.then(() => {
console.log('success!')
})
["catch"](err => {
// console.error(err)
})
})["catch"]((err) => {
console.log('error')
})
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册