javascript Codemod用于样式组件V4从injectGlobal迁移到createClobalStyle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Codemod用于样式组件V4从injectGlobal迁移到createClobalStyle相关的知识,希望对你有一定的参考价值。

const importRenameMap = {
  injectGlobal: 'createGlobalStyle'
};

module.exports = function transformer(file, api) {
  const j = api.jscodeshift;
  let source = file.source;

  source = renameInjectGlobalImportWithCreateGlobal(j, j(source)).toSource();
  source = renameTagTemplate(j, j(source)).toSource();

  return source;
};

/**
 * Renames "injectGlobal" import specifier to "createGlobalStyle"
 * @param {*} j - jscodeshift API
 * @param {*} source - jscodeshift source
 */
const renameInjectGlobalImportWithCreateGlobal = (j, source) => {
  return source
    .find(j.ImportSpecifier)
    .filter(identifier => !!importRenameMap[identifier.value.imported.name])
    .replaceWith(identifier =>
      j.importSpecifier(
        j.identifier(importRenameMap[identifier.node.local.name])
      )
    );
};

/**
 * Rename the previous injectGlobal literal to createGlobalStyle
 * TODO: create GlobalStyle const
 * @param {*} j - jscodeshift API
 * @param {*} source - jscodeshift source
 */
const renameTagTemplate = (j, source) => {
  return source
    .find(j.TaggedTemplateExpression)
    .filter(identifier => !!importRenameMap[identifier.node.tag.name])
    .replaceWith(identifier => {
      identifier.node.tag.name = importRenameMap[identifier.node.tag.name];
      return identifier.node;
      /*
      * I'm stuck here, creating the export const GlobalStyle with the tagged template expression.
      * AST Explorer: https://astexplorer.net/#/gist/5814fc5cb76165cc3dd393a63200fa31/0a242578a790b54c40584d7195cd54009987b3fa
      */
      // const globalStyle = j.identifier('GlobalStyle');
      // globalStyle.init = identifier.node;
      // return j.exportNamedDeclaration(
      //   j.variableDeclaration('const', globalStyle)
      // );
    });
};

以上是关于javascript Codemod用于样式组件V4从injectGlobal迁移到createClobalStyle的主要内容,如果未能解决你的问题,请参考以下文章

Vue图片浏览组件v-viewer,支持旋转缩放翻转等操作

vue过渡动效

JavaScript课程——Day24(bootstrap简介全局的css样式组件)

Material-UI Migration Helper:codemod-script?

如何将样式应用于组件中 div 内的按钮?

Vuetify 样式不适用于 Tailwind