@ twind/wmr - WMR utilizing @ twind/preact
Intro
휴일에는 누워서 핸드폰을 만지작거리다가 1년 전 살짝 화제가 됐던 트윈드라는 경량판 테일윈드를 그냥 놔뒀는데 마침 1년이 지나 조금 해보고 싶어 무거운 허리를 들어 흔들었다.
Twind는 CSS-in-JS에서 CSS를 진행하는 프로그램 라이브러리와 도구를 Template Literal로 생성한 클래스의 API, SSR을 위한 CSS 파일 제작, Tailwind 클래스를 이용한 shim 라이브러리 구축 없음 등을 제공한다.
그런 일은 손 옆에 있는 책갈피에 쓰여 있다.고마워요
계속 해.
2022/01/08twind@next v1 개발 중[email protected].
Start
트윈드는 프로젝트와 사상이 비슷해 프로젝트와 함께 사용하기로 했다.
트윈드가 발표된 tw-in-js의 창고를 살펴보면 WMR을 사용한 샘플이 있어 WMR과 함께 사용할 수 있는 포장
@twind/wmr
을 도입했다.다만
README.md
보니 이상한 문서만 적혀 있었고, 코드샌드박스에서 작동하는 샘플에도 WMR을 사용한 보일러 패널이 없었으니 WMR의 보일러 패널에 코드샌드박스 코드를 우선 이식하는 보일러 패널을 만들자.했어.
설명은 번거로우니 나중에 diff 파일을 사용하세요.
$ npm init wmr tw
$ cd tw
우선 WMR 보일러 보드로 프로젝트를 제작한다.중간에create-wmr를 사용하는지 물어볼 테니 y를 입력하거나 파이프를 통해 yes 명령을 전달하고 '예' 를 선택하십시오.
diff -ur -x package-lock.json -x node_modules wmr/package.json tw/package.json
--- wmr/package.json 2022-01-16 13:21:03.550069105 +0000
+++ tw/package.json 2022-01-16 12:24:55.000000000 +0000
@@ -1,16 +1,30 @@
{
+ "name": "tw",
+ "version": "1.0.0",
"private": true,
+ "description": "Preact, Twind, WMR",
+ "main": "public/index.js",
"scripts": {
"start": "wmr",
"build": "wmr build --prerender",
- "serve": "wmr serve"
+ "serve": "wmr serve",
+ "test": "echo \"Error: no test specified\" && exit 1"
},
"eslintConfig": {
"extends": "preact"
},
+ "keywords": [
+ "preact",
+ "twind",
+ "wmr"
+ ],
+ "author": "黒ヰ樹",
+ "license": "MIT",
"dependencies": {
+ "@twind/wmr": "^1.0.9",
"preact": "^10.6.4",
- "preact-iso": "^2.3.0"
+ "preact-iso": "^2.3.0",
+ "twind": "^0.16.16"
},
"devDependencies": {
"wmr": "^3.7.2"
package.json
에 필요한 최소한의 정보를 추가한다.$ npm i
$ mkdir public/pages/twind
$ touch public/pages/twind/index.js
트윈드 관련 포장이 추가됐다.트윈드 관련 페이지도 미리 제작한다.
diff -ur -x package-lock.json -x node_modules wmr/public/header.js tw/public/header.js
--- wmr/public/header.js 2022-01-16 13:21:02.369964304 +0000
+++ tw/public/header.js 2022-01-16 11:58:27.000000000 +0000
@@ -7,6 +7,7 @@
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
+ <a href="/twind">Twind</a>
<a href="/error">Error</a>
</nav>
<label>
diff -ur -x package-lock.json -x node_modules wmr/public/index.js tw/public/index.js
먼저 머리글에 Twind 페이지의 링크를 생성합니다.diff -ur -x package-lock.json -x node_modules wmr/public/index.js tw/public/index.js
--- wmr/public/index.js 2022-01-16 13:21:02.369964304 +0000
+++ tw/public/index.js 2022-01-16 13:24:57.694862846 +0000
@@ -1,9 +1,11 @@
-import { LocationProvider, Router, Route, lazy, ErrorBoundary, hydrate, prerender as ssr } from 'preact-iso';
+import { ErrorBoundary, LocationProvider, Route, Router, lazy } from 'preact-iso';
+import withTwind from "@twind/wmr";
import Home from './pages/home/index.js';
import NotFound from './pages/_404.js';
import Header from './header.js';
const About = lazy(() => import('./pages/about/index.js'));
+const Twind = lazy(() => import('./pages/twind/index.js'));
export function App() {
return (
@@ -14,6 +16,7 @@
<Router>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
+ <Route path="/twind" component={Twind} />
<Route default component={NotFound} />
</Router>
</ErrorBoundary>
@@ -22,8 +25,8 @@
);
}
+const { hydrate, prerender } = withTwind(data => <App {...data} />);
+
hydrate(<App />);
-export async function prerender(data) {
- return await ssr(<App {...data} />);
-}
+export { prerender };
참조 몬스터 파일은 SSR을 사용하지 않는 방법으로 변경하여 withTwind를 증가시킵니다.const Twind = () => (
<section tw="h-screen bg-purple-400 flex items-center justify-center">
<h1 tw="font-bold text(center 5xl white sm:gray-800 md:pink-700)">This is Twind!</h1>
</section>
);
export default Twind;
public/pages/twind/index.js
CodeSandBox에서 실행되는 샘플을 참고하여 Twind 페이지의 구성 요소를 씁니다.$ npm start
시동.다 됐습니다.
대단히 기쁘다.
Outro
오랜만에 JSX 모듈을 만들고 npm 지령을 써서 즐거웠어요.
npm i typescript
nodemodules를 포함하여 모두 70MB입니다.@twind/wmr
typescript는optional이기 때문에 추가하지 않아도 사용할 수 있습니다.개발 환경인 만큼 앞으로 트윈드가 노력하겠습니다.
P.S.
그나저나 Gitpod은 워크스페이스 URL에서 사용하는 ID가 됐네요.
소유자명과 창고명 아이디를 사용해서 놀랐어요.
Reference
이 문제에 관하여(@ twind/wmr - WMR utilizing @ twind/preact), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tkithrta/articles/6640c5398351a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)