-
-
Notifications
You must be signed in to change notification settings - Fork 58
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
634 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
# `@swc/constify` | ||
|
||
This plugin can be used to hoist constant parts of any expressions as constant variables, without affecting the runtime behavior or readability of the code. | ||
|
||
## Why? | ||
|
||
There are lots of cases where some parts of expressions are constant and thus can be reused, but others are not. | ||
|
||
## Configuration | ||
|
||
This plugin can be configured with `.swcrc` | ||
|
||
```json | ||
{ | ||
"jsc": { | ||
"experimental": { | ||
"plugins": [ ["@swc/plugin-constify", { | ||
}] ] | ||
} | ||
} | ||
``` | ||
|
||
## Usage | ||
|
||
Basically, this plugins is about extracting some parts of expressions. | ||
|
||
```ts | ||
import { constify, lazyConst } from "@swc/constify"; | ||
|
||
export function call(dynamic) { | ||
const options = [ | ||
constify({ | ||
code: 1, | ||
onClick() {}, | ||
}), | ||
{ | ||
code: 2, | ||
onClick() { | ||
console.log(dynamic); | ||
}, | ||
}, | ||
lazyConst({ | ||
code: 3, | ||
onClick() {}, | ||
}), | ||
]; | ||
|
||
return options; | ||
} | ||
``` | ||
|
||
becomes | ||
|
||
```ts | ||
const __CONST_0__ = { | ||
code: 1, | ||
onClick() {}, | ||
}; | ||
function __CONST_1__() { | ||
const __data__ = { | ||
code: 3, | ||
onClick() {}, | ||
}; | ||
return (__CONST_1__ = function () { | ||
return __data__; | ||
})(); | ||
} | ||
|
||
export function call(dynamic) { | ||
const options = [ | ||
__CONST_0__, | ||
{ | ||
code: 2, | ||
onClick() { | ||
console.log(dynamic); | ||
}, | ||
}, | ||
__CONST_1__(), | ||
]; | ||
|
||
return options; | ||
} | ||
``` | ||
|
||
Note that this plugin supports using non-top-level variables. Those are hoisted to uppermost scope with the all used variable in the scope. | ||
In other words, you can write code like | ||
|
||
```ts | ||
import { constify, lazyConst } from "@swc/constify"; | ||
|
||
export function call(d1) { | ||
function a(d2) { | ||
function a1() { | ||
return [ | ||
constify({ | ||
code: d1, | ||
onClick() {}, | ||
}), | ||
constify({ | ||
code: d2, | ||
onClick() { | ||
console.log(d2); | ||
}, | ||
}), | ||
lazyConst({ | ||
code: d1, | ||
onClick() {}, | ||
}), | ||
]; | ||
} | ||
|
||
return a1; | ||
} | ||
|
||
return a; | ||
} | ||
``` | ||
|
||
and it will be compiled as | ||
|
||
```ts | ||
export function call(d1) { | ||
const __CONST_0__ = { | ||
code: d1, | ||
onClick() {}, | ||
}; | ||
|
||
function __CONST_2__() { | ||
const __data__ = { | ||
code: d1, | ||
onClick() {}, | ||
}; | ||
return (__CONST_2__ = function () { | ||
return __data__; | ||
})(); | ||
} | ||
|
||
function a(d2) { | ||
const __CONST_1__ = { | ||
code: d2, | ||
onClick() { | ||
console.log(d2); | ||
}, | ||
}; | ||
|
||
function a1() { | ||
return [__CONST_0__, __CONST_1__, __CONST_2__()]; | ||
} | ||
|
||
return a1; | ||
} | ||
|
||
return a; | ||
} | ||
``` | ||
|
||
# @swc/plugin-constify | ||
|
||
## 0.1.44 | ||
|
||
### Patch Changes | ||
|
||
- 4ef0b7f: Add changelog to the readme | ||
|
||
## 0.1.43 | ||
|
||
### Patch Changes | ||
|
||
- 4e72680: [email protected] | ||
|
||
## 0.1.42 | ||
|
||
### Patch Changes | ||
|
||
- 16bb4d8: [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# emotion | ||
|
||
The official plugin for emotion css-in-js library. | ||
|
||
## Configuration | ||
|
||
The plugin uses the same config as described in [Next emotion documentation](https://nextjs.org/docs/advanced-features/compiler#emotion). | ||
|
||
```js | ||
{ | ||
jsc: { | ||
... | ||
experimental: { | ||
plugins: [ ['@swc/plugin-emotion', { | ||
// default is true. It will be disabled when build type is production. | ||
sourceMap?: boolean, | ||
// default is 'dev-only'. | ||
autoLabel?: 'never' | 'dev-only' | 'always', | ||
// default is '[local]'. | ||
// Allowed values: `[local]` `[filename]` and `[dirname]` | ||
// This option only works when autoLabel is set to 'dev-only' or 'always'. | ||
// It allows you to define the format of the resulting label. | ||
// The format is defined via string where variable parts are enclosed in square brackets []. | ||
// For example labelFormat: "my-classname--[local]", where [local] will be replaced with the name of the variable the result is assigned to. | ||
labelFormat?: string, | ||
}] ] | ||
} | ||
} | ||
``` | ||
## Credit | ||
Source code for plugin itself (not transforms) are copied from https://github.com/IvanRodriCalleja/emotion-swc-plugin | ||
# @swc/plugin-emotion | ||
## 2.5.114 | ||
### Patch Changes | ||
- 4ef0b7f: Add changelog to the readme | ||
## 2.5.113 | ||
### Patch Changes | ||
- 4e72680: [email protected] | ||
## 2.5.112 | ||
### Patch Changes | ||
- 16bb4d8: [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# @swc/plugin-jest | ||
|
||
# @swc/plugin-jest | ||
|
||
## 1.5.114 | ||
|
||
### Patch Changes | ||
|
||
- 4ef0b7f: Add changelog to the readme | ||
|
||
## 1.5.113 | ||
|
||
### Patch Changes | ||
|
||
- 4e72680: [email protected] | ||
|
||
## 1.5.112 | ||
|
||
### Patch Changes | ||
|
||
- 16bb4d8: [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# loadable-components | ||
|
||
## Config | ||
|
||
```json | ||
["loadable-components", {}] | ||
``` | ||
|
||
# @swc/plugin-loadable-components | ||
|
||
## 0.3.114 | ||
|
||
### Patch Changes | ||
|
||
- 4ef0b7f: Add changelog to the readme | ||
|
||
## 0.3.113 | ||
|
||
### Patch Changes | ||
|
||
- 4e72680: [email protected] | ||
|
||
## 0.3.112 | ||
|
||
### Patch Changes | ||
|
||
- 16bb4d8: [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# @swc/plugin-noop | ||
|
||
# @swc/plugin-noop | ||
|
||
## 1.5.112 | ||
|
||
### Patch Changes | ||
|
||
- 4ef0b7f: Add changelog to the readme | ||
|
||
## 1.5.111 | ||
|
||
### Patch Changes | ||
|
||
- 4e72680: [email protected] | ||
|
||
## 1.5.110 | ||
|
||
### Patch Changes | ||
|
||
- 16bb4d8: [email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# react-remove-properties | ||
|
||
See https://nextjs.org/docs/architecture/nextjs-compiler#remove-react-properties for more information. | ||
|
||
## Config | ||
|
||
```json | ||
["react-remove-properties"] | ||
``` | ||
|
||
or | ||
|
||
```json | ||
[ | ||
"react-remove-properties", | ||
{ | ||
// The regexes defined here are processed in Rust so the syntax is different from | ||
// JavaScript `RegExp`s. See https://docs.rs/regex. | ||
"properties": ["^data-custom$"] | ||
} | ||
] | ||
``` | ||
|
||
# @swc/plugin-react-remove-properties | ||
|
||
## 1.5.114 | ||
|
||
### Patch Changes | ||
|
||
- 4ef0b7f: Add changelog to the readme | ||
|
||
## 1.5.113 | ||
|
||
### Patch Changes | ||
|
||
- 4e72680: [email protected] | ||
|
||
## 1.5.112 | ||
|
||
### Patch Changes | ||
|
||
- 16bb4d8: [email protected] |
Oops, something went wrong.