0.3.1 • Published 4 days ago

@ice/plugin-rax-compat v0.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 days ago

@ice/plugin-rax-compat

An ice.js plugin for migrating rax-app projects.

Usage

Add plugin in ice.config.mts:

import { defineConfig } from 'ice';
import compatRax from '@ice/plugin-rax-compat';

export default defineConfig(() => ({
  plugins: [compatRax({ /* options */ })],
}));

Options

inlineStyle

  • Default: false.
  • Enable stylesheet loader to import CSS files.

cssModule

  • Default: true
  • When inlineStyle enabled and cssModule disabled, process CSS Module files to inline included styles(not recommended).

legacy

  • Default: false
  • Enable legacy way to import rax as namespace, like v0.6:
import Rax from 'rax';

Rax.createContext();

说明

这个插件将会处理这些兼容逻辑:

  • 类型定义,Rax 中的类型定义来自于 React 16.8 前,与 React 18 的类型定义存在一些差异。

    • 这个插件会新增一个对 Rax namespace 进行声明的 .d.ts 文件,内部使用 React 类型定义来进行声明。
  • 别名,将组成 rax 核心逻辑的 rax- 包,如 rax-children 等,映射到 rax-compat 的内部实现。

    • 同时,在启用 legacy 模式时,会将 rax 映射到 rax-compat-legacy-exports.ts,此文件支持了 Rax.createContext 这样的使用方式(Rax v0.6.x)。
  • JSX,插件内部将基于源码类型来调整 swc 的编译配置。

    • 在源码中使用了 @jsx createElement annotation 时,将设置 jsx runtime 为 classic。
    • 在源码导入了 rax 包时,将设置 importSource 为 rax-compat/runtime(与 React 18 保持一致)。
  • 样式,在启用 inlineStyle 时,插件内部将额外处理行内样式逻辑。

    • 首先,JSXClassNameTransformer 会将源码中的 <div className="header" /> 的写法转换为 <div style={styleSheet.header} />。 - 注意,只有项目源码内的代码才会被转换。

      - 注意,`<div className={'xxx'} />` 这样的写法不会被转换。
          
      - 注意,`import './x.module.css'` 这样的写法不会被转换。
    • 接着,在 ClientSide,插件会覆盖原本的 Webpack Ruleset:

      • 对于命中了 inlineStyle 的资源文件,会使用 stylesheet-loader 进行处理为 styleSheet 对象(非 css 文件还会先交由预处理器编译)。其它文件会保持原本的处理逻辑,即处理到额外的 CSS 文件中。
      • 注意,目前在 --speedup 下此逻辑无法生效。
      • 注意,如果禁用了 cssModule ,那么 .module.css(less/...) 文件也会被交由 stylesheet-loader 处理。
  • 在 ServerSide,对命中了 inlineStyle 的资源文件,会使用 esbuild 进行处理为 styleSheet 对象(文件的类型会被改变为 JS 文件)。

关于行内样式的额外说明:

  • 只有项目源码中使用了 className="xxx" 的写法,才会被转换为 style={styleSheet.xxx} 的写法,因此 CSS Module 使用的 className={styles.xxx} 这种写法也不会被转换。另外,来自 node_modules 的代码不会被转换。
0.3.1

4 days ago

0.3.0

4 months ago

0.2.10

5 months ago

0.2.3-beta.3

10 months ago

0.2.7

8 months ago

0.2.6

9 months ago

0.2.9

7 months ago

0.2.8

7 months ago

0.2.3

10 months ago

0.2.5

10 months ago

0.2.4

10 months ago

0.2.3-alpha.2

11 months ago

0.2.3-alpha.1

11 months ago

0.2.3-alpha.0

11 months ago

0.2.2-alpha.0

12 months ago

0.2.1-alpha.4

12 months ago

0.2.1

12 months ago

0.2.2

12 months ago

0.1.4-beta.0

1 year ago

0.1.4-beta.1

1 year ago

0.2.1-alpha.2

1 year ago

0.2.1-alpha.3

1 year ago

0.2.1-alpha.0

1 year ago

0.2.1-alpha.1

1 year ago

0.1.4

1 year ago

0.1.3-alpha.1

1 year ago

0.1.3-alpha.2

1 year ago

0.1.5

1 year ago

0.1.5-beta.1

1 year ago

0.1.5-beta.0

1 year ago

0.2.0-beta.1

1 year ago

0.2.1-beta.0

1 year ago

0.2.0-beta.0

1 year ago

0.2.0

1 year ago

0.1.3-beta.2

1 year ago

0.1.3-beta.4

1 year ago

0.1.3-beta.3

1 year ago

0.1.0-beta.12

1 year ago

0.1.0-beta.11

1 year ago

0.1.0-beta.14

1 year ago

0.1.0-beta.13

1 year ago

0.1.0-beta.15

1 year ago

0.1.0-alpha.104

2 years ago

0.1.0-alpha.105

2 years ago

0.1.0-rc.8

2 years ago

0.1.2-beta.2

1 year ago

0.1.2-beta.3

1 year ago

0.1.2-beta.1

1 year ago

0.1.2-beta.4

1 year ago

0.1.2-beta.5

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.3

1 year ago

0.1.1-beta.2

1 year ago

0.1.3-beta.1

1 year ago

0.1.1-beta.1

1 year ago

0.1.1-beta.5

1 year ago

0.1.1-beta.4

1 year ago

0.1.1-beta.3

1 year ago

0.1.0-alpha.98

2 years ago

0.1.0-alpha.99

2 years ago

0.1.0-alpha.103

2 years ago

0.1.0-alpha.100

2 years ago

0.1.0-alpha.101

2 years ago

0.1.0-alpha.102

2 years ago

0.1.0-rc.7

2 years ago

0.1.0-rc.5

2 years ago

0.1.0-rc.6

2 years ago

0.1.0-rc.4

2 years ago

0.1.0-alpha.92

2 years ago

0.1.0-alpha.91

2 years ago

0.1.0-alpha.94

2 years ago

0.1.0-alpha.93

2 years ago

0.1.0-alpha.96

2 years ago

0.1.0-alpha.95

2 years ago

0.1.0-alpha.97

2 years ago

0.1.0-beta.10

2 years ago

0.1.0-rc.3

2 years ago

0.1.0-rc.2

2 years ago

0.1.0-alpha.76

2 years ago

0.1.0-alpha.78

2 years ago

0.1.0-alpha.77

2 years ago

0.1.0-alpha.79

2 years ago

0.1.0-alpha.81

2 years ago

0.1.0-alpha.80

2 years ago

0.1.0-alpha.83

2 years ago

0.1.0-alpha.82

2 years ago

0.1.0-alpha.85

2 years ago

0.1.0-alpha.84

2 years ago

0.1.0-alpha.87

2 years ago

0.1.0-alpha.86

2 years ago

0.1.0-alpha.89

2 years ago

0.1.0-alpha.88

2 years ago

0.1.0-alpha.90

2 years ago

0.1.0-rc.1

2 years ago

0.1.0-beta.9

2 years ago

0.1.0-alpha.75

2 years ago

0.1.0-alpha.74

2 years ago

0.1.0-beta.8

2 years ago

0.1.0-alpha.73

2 years ago

0.1.0-alpha.72

2 years ago

0.1.0-alpha.71

2 years ago

0.1.0-alpha.70

2 years ago

0.1.0-alpha.69

2 years ago

0.1.0-alpha.68

2 years ago

0.1.0-beta.7

2 years ago

0.1.0-alpha.67

2 years ago

0.1.0-alpha.66

2 years ago

0.1.0-alpha.65

2 years ago

0.1.0-alpha.64

2 years ago

0.1.0-alpha.63

2 years ago

0.1.0-alpha.62

2 years ago

0.1.0-alpha.61

2 years ago

0.1.0-alpha.60

2 years ago

0.1.0-alpha.59

2 years ago

0.1.0-alpha.58

2 years ago

0.1.0-alpha.57

2 years ago

0.1.0-alpha.56

2 years ago

0.1.0-alpha.55

2 years ago

0.1.0-alpha.54

2 years ago

0.1.0-alpha.53

2 years ago

0.1.0-alpha.52

2 years ago

0.1.0-alpha.51

2 years ago

0.1.0-alpha.50

2 years ago

0.1.0-beta.6

2 years ago

0.1.0-alpha.49

2 years ago

0.1.0

2 years ago

0.1.0-alpha.47

2 years ago

0.1.0-beta.5

2 years ago

0.1.0-beta.4

2 years ago

0.1.0-alpha.46

2 years ago

0.1.0-alpha.45

2 years ago

0.1.0-alpha.44

2 years ago

0.1.0-beta.3

2 years ago

0.1.0-alpha.43

2 years ago

0.1.0-beta.2

2 years ago

0.1.0-beta.1

2 years ago

0.1.0-alpha.42

2 years ago

0.1.0-alpha.41

2 years ago

0.1.0-alpha.40

2 years ago

0.1.0-alpha.39

2 years ago

0.1.0-alpha.38

2 years ago

0.1.0-alpha.37

2 years ago

0.1.0-alpha.36

2 years ago

0.1.0-alpha.35

2 years ago

0.1.0-alpha.34

2 years ago

0.1.0-alpha.33

2 years ago

0.1.0-alpha.32

2 years ago

0.1.0-alpha.31

2 years ago

0.1.0-alpha.30

2 years ago

0.1.0-alpha.29

2 years ago

0.1.0-alpha.28

2 years ago

0.1.0-alpha.27

2 years ago

0.1.0-alpha.26

2 years ago

0.1.0-alpha.25

2 years ago

0.1.0-alpha.24

2 years ago

0.1.0-alpha.23

2 years ago

0.1.0-alpha.22

2 years ago

0.1.0-alpha.21

2 years ago

0.1.0-alpha.20

2 years ago

0.1.0-alpha.19

2 years ago

0.1.0-alpha.18

2 years ago

0.1.0-alpha.17

2 years ago

0.1.0-alpha.16

2 years ago

0.1.0-alpha.15

2 years ago

0.1.0-alpha.14

2 years ago

0.1.0-alpha.13

2 years ago

0.1.0-alpha.12

2 years ago

0.1.0-alpha.11

2 years ago

0.1.0-alpha.10

2 years ago

0.1.0-alpha.9

2 years ago

0.1.0-alpha.8

2 years ago

0.1.0-alpha.7

2 years ago

0.1.0-alpha.6

2 years ago

0.1.0-alpha.5

2 years ago

0.1.0-alpha.4

2 years ago

0.1.0-alpha.3

2 years ago

0.1.0-alpha.2

2 years ago

0.1.0-alpha.1

2 years ago

0.1.0-beta.0

2 years ago