Пример #1
0
exports.getMiniappEntry = function(context, entryList = [], cmlType) {
  var root = context;
  var entry = {};
  entry['common'] = ['chameleon-runtime/index.js','chameleon-store/index.js']
  var projectPath = path.resolve(root,'src');
  var npmPath = path.resolve(root,'node_modules');
  
  //记录已经添加的入口,防止重复循环添加
  let hasEntryedPath = [];

  //组件导出
  let exportEntryFile = cmlUtils.getExportEntry(cmlType, context, entryList );
  exportEntryFile.forEach(item=>{
    addEntry(item);
  })

  let npmComponents = cmlUtils.getNpmComponents(cmlType, root);
  let buildInComponens = cmlUtils.getBuildinComponents(cmlType, root).components;
  npmComponents = npmComponents.concat(buildInComponens);
  npmComponents.forEach(item=>{
    addEntry(item.filePath)
  })
 
  return entry;

  function addEntry(chameleonFilePath){
    //plugin://
    if(!chameleonFilePath) {
      return;
    }
    if(~hasEntryedPath.indexOf(chameleonFilePath)) {
      return;
    }
    hasEntryedPath.push(chameleonFilePath);
    let entryName = cmlUtils.getPureEntryName(chameleonFilePath, cmlType, root);
    entry[entryName] = chameleonFilePath;

    //处理json文件中引用的组件作为入口,wxml文件
    let targetObject = cmlUtils.getJsonFileContent(chameleonFilePath, cmlType)
    if(targetObject && targetObject.usingComponents) {
      let usingComponents = targetObject.usingComponents;
      Object.keys(usingComponents).forEach(key=>{
        let comPath = usingComponents[key];
        let {filePath} = cmlUtils.handleComponentUrl(root,chameleonFilePath,comPath,cmlType);
        addEntry(filePath);
      })
    }
  }
}
Пример #2
0
 function ASTcompileTemplate(templateContent, options = {}) {
   let buildInComponents = {};
   // 内置组件库中的cml文件不进行内置组件的替换
   if(!isBuildInFile) {
     buildInComponents = cmlUtils.getBuildinComponents(cmlType, context).compileTagMap;
   }
   let {source, usedBuildInTagMap = {}} = compileTemplate(templateContent, cmlType, {
     buildInComponents,
     cmss,
     ...options
   });
   // currentUsedBuildInTagMap 中 key为  cml-builtin-button
   Object.keys(usedBuildInTagMap).forEach(key =>{
     let value = usedBuildInTagMap[key];
     currentUsedBuildInTagMap[value] = key;
   })
   return source;
 }