NiPlayer
V1.4.3
rspack + solid-JS + solid-store + pnpm + monorepo를 사용한 리팩토링;
플레이어의 전체 구조는 플레이어 레이어, 스토어 레이어 및 플러그인 레이어로 나뉩니다.
TSCONFIG.JSON 실험용 검사기를 true로 구성합니다
{
"compilerOptions" : {
"target" : "ESNext" ,
"module" : "ES6" ,
"experimentalDecorators" : true
}
} rspack.config.cjs babel-loader 플러그인 구성 **["@babel/plugin-proposal-decorators", { "legacy": true}] ]**
// @ts-check
const { defineConfig } = require ( '@rspack/cli' ) ;
const path = require ( 'path' ) ;
const config = defineConfig ( {
module : {
rules : [
{
test : / .(j|t)sx?$ / ,
use : [
{
loader : 'babel-loader' ,
options : {
presets : [ 'solid' , '@babel/preset-typescript' ] ,
plugins : [ 'solid-styled-jsx/babel' , [ "@babel/plugin-proposal-decorators" , { "legacy" : true } ] ]
} ,
} ,
] ,
}
]
}
} ) ;기본적으로 TSX는 React의 React.CreatElement (JSX 유형 프롬프트에 대해서도 발견되는 React/JSX-Runtime 포함)를 사용하여 VDOM을 컴파일합니다. 따라서 Solid-JS + TSX 조합을 사용하려면 tsconfig.json 및 rspack.config.cjs에서 각각 특수 구성을 수행해야합니다.
tsconfig.json
{
"compilerOptions" : {
"jsx" : "preserve" ,
"jsxImportSource" : "solid-js" ,
"module" : "ESNext" ,
"moduleResolution" : "Bundler"
}
}rspack.config.cjs는 다음과 같이 babel-loader를 구성합니다.
전체 컴파일 프로세스 :