Next.js에서 ReScript, tailwind 사용
14063 단어 ReScripttailwindcssnext.js
Next.js x ReScript
ReasonML을 사용하는 Next.js 샘플 사용
yarn create next-app --example with-reasonml with-reasonml-app
라이브러리 upgrade
yarn upgrade bs-platform@^9.0.2 reason-react@^0.9.1 react@^17.0.1 react-dom@^17.0.1
샘플을 커맨드로 만들었을 때는 패키지의 버젼이 낡기 때문에 갱신한다.
ReasonML -> ReScript로 변환
for f in pages/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
for f in components/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
for f in bindings/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
에서 일괄적으로 ReasonML 형식(.re)에서 ReScript 형식(.res)으로 변환할 수 있다.
동작 확인
다음 두 개를 각각 다른 터미널 탭/창에서 실시
yarn dev:reason
yarn dev: next
tailwind
Tailwind는 CSS 프레임 워크 중 하나이며 Next.js에서 사용하는 방법이 공식적으로 실려있다 때문에 일반적으로 따릅니다.
install
yarn add --dev tailwindcss@latest postcss@latest autoprefixer@latest
yarn tailwindcss init -p
Next.js에서 읽을 수 있도록
style/main.css@tailwind base;
@tailwind components;
@tailwind utilities;
pages/_app.jsimport '../styles/main.css'
export default function MyApp({ Component, pageProps }) {
return(<div>
<Component {...pageProps} />
</div>);
}
tailwind.config.jsmodule.exports = {
purge: [
'./pages/**/*.res',
'./components/**/*.res',
],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
memo
_app.res
에서 변환 할 수 없습니까? 라고 생각하지만,
bsconfig에서 suffix
를 .bs.js
로 설정하고 있기 때문에 _app.res
를 작성해도 _app.bs.js
에만 있습니다.suffix
를 다시 쓰면 .js
를 출력 할 수 있지만 .bs.js가 강력히 권장됩니다.
또한 스프레드 연산자 ...
의 사용은 권장되지 않습니다.
Props Spread
You can't.
cloneElement를 사용하여 회피를 시도합니다.
_app.res%raw(`require("../styles/main.css")`)
let make = (~component, ~pageProps) => ReasonReact.cloneElement(
component,
~props=pageProps,
[]
);
let default = make
가 나오고, global CSS가 읽을 수 있는 것은 어떻게 되어도 pages/_app.js
뿐이라는 사실은 흔들림이 없다는 것을 알 수 있다.
그러나 위의 파일처럼 suffix를 .js
로 설정해도 움직이지 않으므로 쓰기가 잘못되었을 수 있습니다. [조사 중]_app.res
예제도 Destructuring 되지 않았습니다.
글쎄, _app.js 정도 JavaScript에서도 그래.
동작 확인
Header를 다음과 같이 변경한다. 외부의 className border-b bg-white py-2 md:py-4
로 tailwind를 이용하고 있다.
components/Header.res@react.component
let make = () =>
<nav className="border-b bg-white py-2 md:py-4">
<div>
<Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
<Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
</div>
</nav>
let default = make
그건 그렇고
yarn dev~
그런데 bsb 오류가 발생하면 다음 스크립트를 실행할 수 있습니다.
first.shtouch ./node_modules/bs-platform/index.js
sed -i -e 's/^{$/{\n "main": "index.js",/g' ./node_modules/bs-platform/package.json
vercel에 배포하는 경우 OVERRIDE를 설정하고이 스크립트를 build 명령에 포함시킵니다.
./first.sh && yarn build
Future works
re-tailwind 을 사용하여 타입을 이용한 설정이 가능?
조금 시도한 느낌으로는 움직이지 않았기 때문에 요조사.
추가
rescript 용 react 라이브러리이 있었기 때문에 그곳을 사용합니다.
ReasonReact -> RescriptReact
yarn
yarn remove reason-react
yarn add @rescript/react
migration
bsconfig.json- "bs-dependencies": ["reason-react"],
+ "bs-dependencies": ["@rescript/react"],
Header.res- <Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
- <Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
+ <Next.Link href="/">{React.string("Home")}</Next.Link>
+ <Next.Link href="/about">{React.string("About")}</Next.Link>
다른 위치의 경우 ReasonReact.string
를 React.string
로 바꿉니다.
다른 표현에 대해서도, 라이브러리 문서 에 기재되어 있으므로 확인되었고.
package.json- "dev:reason": "bsb -clean-world -make-world -w",
+ "dev:rescript": "bsb -clean-world -make-world -w",
package.json
에 대해서는 바꾸지 않아도 괜찮지만 바꾸고 싶어진다.
참고문헌
Next.js - Example app using ReasonML & ReasonReact components
ReScript - Migrate from BuckleScript/Reason
ReScript Forum - Purpose, alternatives to next-transpile-modules in next ReScript projects
Tailwind CSS - Install Tailwind CSS with Next.js
ReScript - Configuration - suffix
ReasonReact - Props Spread
ReasonReact - cloneElement
ReScript - Destructuring
re-tailwind
rescript-react
ReScript - rescript-react - Migrate from ReasonReact
Reference
이 문제에 관하여(Next.js에서 ReScript, tailwind 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nagatatz/items/1596d86df337c06e3812
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
yarn create next-app --example with-reasonml with-reasonml-app
yarn upgrade bs-platform@^9.0.2 reason-react@^0.9.1 react@^17.0.1 react-dom@^17.0.1
for f in pages/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
for f in components/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
for f in bindings/**/*.re; do; node_modules/.bin/bsc -format $f > ${f%.re}.res && rm $f; done;
yarn dev:reason
yarn dev: next
Tailwind는 CSS 프레임 워크 중 하나이며 Next.js에서 사용하는 방법이 공식적으로 실려있다 때문에 일반적으로 따릅니다.
install
yarn add --dev tailwindcss@latest postcss@latest autoprefixer@latest
yarn tailwindcss init -p
Next.js에서 읽을 수 있도록
style/main.css
@tailwind base;
@tailwind components;
@tailwind utilities;
pages/_app.js
import '../styles/main.css'
export default function MyApp({ Component, pageProps }) {
return(<div>
<Component {...pageProps} />
</div>);
}
tailwind.config.js
module.exports = {
purge: [
'./pages/**/*.res',
'./components/**/*.res',
],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
memo
_app.res
에서 변환 할 수 없습니까? 라고 생각하지만,bsconfig에서
suffix
를 .bs.js
로 설정하고 있기 때문에 _app.res
를 작성해도 _app.bs.js
에만 있습니다.suffix
를 다시 쓰면 .js
를 출력 할 수 있지만 .bs.js가 강력히 권장됩니다.또한 스프레드 연산자
...
의 사용은 권장되지 않습니다.Props Spread
You can't.
cloneElement를 사용하여 회피를 시도합니다.
_app.res
%raw(`require("../styles/main.css")`)
let make = (~component, ~pageProps) => ReasonReact.cloneElement(
component,
~props=pageProps,
[]
);
let default = make
가 나오고, global CSS가 읽을 수 있는 것은 어떻게 되어도
pages/_app.js
뿐이라는 사실은 흔들림이 없다는 것을 알 수 있다.그러나 위의 파일처럼 suffix를
.js
로 설정해도 움직이지 않으므로 쓰기가 잘못되었을 수 있습니다. [조사 중]_app.res
예제도 Destructuring 되지 않았습니다.글쎄, _app.js 정도 JavaScript에서도 그래.
동작 확인
Header를 다음과 같이 변경한다. 외부의 className
border-b bg-white py-2 md:py-4
로 tailwind를 이용하고 있다.components/Header.res
@react.component
let make = () =>
<nav className="border-b bg-white py-2 md:py-4">
<div>
<Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
<Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
</div>
</nav>
let default = make
그건 그렇고
yarn dev~
그런데 bsb 오류가 발생하면 다음 스크립트를 실행할 수 있습니다.
first.shtouch ./node_modules/bs-platform/index.js
sed -i -e 's/^{$/{\n "main": "index.js",/g' ./node_modules/bs-platform/package.json
vercel에 배포하는 경우 OVERRIDE를 설정하고이 스크립트를 build 명령에 포함시킵니다.
./first.sh && yarn build
Future works
re-tailwind 을 사용하여 타입을 이용한 설정이 가능?
조금 시도한 느낌으로는 움직이지 않았기 때문에 요조사.
추가
rescript 용 react 라이브러리이 있었기 때문에 그곳을 사용합니다.
ReasonReact -> RescriptReact
yarn
yarn remove reason-react
yarn add @rescript/react
migration
bsconfig.json- "bs-dependencies": ["reason-react"],
+ "bs-dependencies": ["@rescript/react"],
Header.res- <Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
- <Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
+ <Next.Link href="/">{React.string("Home")}</Next.Link>
+ <Next.Link href="/about">{React.string("About")}</Next.Link>
다른 위치의 경우 ReasonReact.string
를 React.string
로 바꿉니다.
다른 표현에 대해서도, 라이브러리 문서 에 기재되어 있으므로 확인되었고.
package.json- "dev:reason": "bsb -clean-world -make-world -w",
+ "dev:rescript": "bsb -clean-world -make-world -w",
package.json
에 대해서는 바꾸지 않아도 괜찮지만 바꾸고 싶어진다.
참고문헌
Next.js - Example app using ReasonML & ReasonReact components
ReScript - Migrate from BuckleScript/Reason
ReScript Forum - Purpose, alternatives to next-transpile-modules in next ReScript projects
Tailwind CSS - Install Tailwind CSS with Next.js
ReScript - Configuration - suffix
ReasonReact - Props Spread
ReasonReact - cloneElement
ReScript - Destructuring
re-tailwind
rescript-react
ReScript - rescript-react - Migrate from ReasonReact
Reference
이 문제에 관하여(Next.js에서 ReScript, tailwind 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nagatatz/items/1596d86df337c06e3812
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
touch ./node_modules/bs-platform/index.js
sed -i -e 's/^{$/{\n "main": "index.js",/g' ./node_modules/bs-platform/package.json
./first.sh && yarn build
re-tailwind 을 사용하여 타입을 이용한 설정이 가능?
조금 시도한 느낌으로는 움직이지 않았기 때문에 요조사.
추가
rescript 용 react 라이브러리이 있었기 때문에 그곳을 사용합니다.
ReasonReact -> RescriptReact
yarn
yarn remove reason-react
yarn add @rescript/react
migration
bsconfig.json- "bs-dependencies": ["reason-react"],
+ "bs-dependencies": ["@rescript/react"],
Header.res- <Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
- <Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
+ <Next.Link href="/">{React.string("Home")}</Next.Link>
+ <Next.Link href="/about">{React.string("About")}</Next.Link>
다른 위치의 경우 ReasonReact.string
를 React.string
로 바꿉니다.
다른 표현에 대해서도, 라이브러리 문서 에 기재되어 있으므로 확인되었고.
package.json- "dev:reason": "bsb -clean-world -make-world -w",
+ "dev:rescript": "bsb -clean-world -make-world -w",
package.json
에 대해서는 바꾸지 않아도 괜찮지만 바꾸고 싶어진다.
참고문헌
Next.js - Example app using ReasonML & ReasonReact components
ReScript - Migrate from BuckleScript/Reason
ReScript Forum - Purpose, alternatives to next-transpile-modules in next ReScript projects
Tailwind CSS - Install Tailwind CSS with Next.js
ReScript - Configuration - suffix
ReasonReact - Props Spread
ReasonReact - cloneElement
ReScript - Destructuring
re-tailwind
rescript-react
ReScript - rescript-react - Migrate from ReasonReact
Reference
이 문제에 관하여(Next.js에서 ReScript, tailwind 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nagatatz/items/1596d86df337c06e3812
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
yarn remove reason-react
yarn add @rescript/react
- "bs-dependencies": ["reason-react"],
+ "bs-dependencies": ["@rescript/react"],
- <Next.Link href="/">{ReasonReact.string("Home")}</Next.Link>
- <Next.Link href="/about">{ReasonReact.string("About")}</Next.Link>
+ <Next.Link href="/">{React.string("Home")}</Next.Link>
+ <Next.Link href="/about">{React.string("About")}</Next.Link>
- "dev:reason": "bsb -clean-world -make-world -w",
+ "dev:rescript": "bsb -clean-world -make-world -w",
Next.js - Example app using ReasonML & ReasonReact components
ReScript - Migrate from BuckleScript/Reason
ReScript Forum - Purpose, alternatives to next-transpile-modules in next ReScript projects
Tailwind CSS - Install Tailwind CSS with Next.js
ReScript - Configuration - suffix
ReasonReact - Props Spread
ReasonReact - cloneElement
ReScript - Destructuring
re-tailwind
rescript-react
ReScript - rescript-react - Migrate from ReasonReact
Reference
이 문제에 관하여(Next.js에서 ReScript, tailwind 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nagatatz/items/1596d86df337c06e3812텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)