微信小程序从webview迁移到skyline

285 阅读1分钟

1.由于想体验小程序的skyline,但是按照开发者工具中的提示,一个个对页面中的json加属性太麻烦,所以就想写个简单的node脚本,遍历所有注册的页面的json,添加属性

const fs = require("fs");
const path = require("path");
const appjson = require("./app.json");
const { pages = [], subpackages = [] } = appjson;

function getAllPages(pages, subpackages) {
  let __pages = pages;
  subpackages.forEach((ele) => {
    ele.pages.forEach((page) => {
      __pages.push(`${ele.root}/${page}`);
    });
  });
  return __pages;
}
const allPages = getAllPages(pages, subpackages);

allPages.forEach((page) => {
  try {
    const filePath = path.resolve(`./${page}.json`);
    const contents = fs.readFileSync(filePath, { encoding: "utf8" });
    let __json = JSON.parse(contents);
    __json.renderer = "skyline";
    __json.navigationStyle = "custom";

    fs.writeFileSync(filePath, JSON.stringify(__json));
  } catch (err) {
    console.error(err);
  }
});

tips:由于使用的node版本是16,更高版本请自行替换导入方式