Fork me on GitHub

2022-02-22: Deno 1.19, Next.js 12.1, Monorepo Tools 정리

Translator: U-Yeong Ju Edit on GitHub See Revisions

JSer.info #580 - Deno 1.19가 릴리스 됐다.

deno vendor라는 외부 모듈을 저장소 내에 관리 할 수 있도록 도와주는 명령어가 추가됐다.
deno vendor은 외부 모듈을 로컬에 설치하고 Import maps으로 매핑하여 사용할 수 있다.

Deno.FileDeno.FsFile로 이름 변경하고 Deno.File를 비권장 했다.
Deno.File은 다음 메이저 업데이트에서 삭제될 예정이다.

Deno.FsFileDeno.Conn 등이 Web Streams에 대응, CompressionStream / DecompressionStream 지원, console.log가 순환 참조를 표시할 수 있도록 개선, Deno.listen이 Unix sockets를 통해 설정된 연결도 지원한다.
또, 불안정 API Deno.getUid, Deno.networkInterfaces 추가도 함께 이뤄졌다.


Next.js 12.1이 릴리스 됐다.

API 서버에서 unstable_revalidate를 사용해 ISR 페이지를 revalidate할 수 있도록 변경, next/jest 추가, SWC 개선과 Minify 대응.
또, 실험적 기능으로 outputStandalone 옵션으로 Next.js를 서버로 사용하기 위해서 필요한 파일만을 출력할 수 있는 기능이 추가됐고 React 18 대응 개선이 이뤄졌다.


Monorepo Explained 사이트에는 monorepo와 관련된 도구가 소개돼 있다.
Bazel / Gradle / Lage / Lerna / Nx / Rush / Turborepo에 대한 캐시 및 분산 태스크 등 각 기능이 비교 및 분석돼 있다.
사이트는 Narwhal(Nx) 쪽 사람을 중심으로 생성하고 있다.

때마침 State of JS 2021 설문 결과가 공개 됐으며 내용 중 Monorepo Tools와 관련된 설문도 있으니 함께 살펴보면 좋을 거 같다.

또, 현재 유지보수가 중단된 Lernaversion / publish / run 명령어만 추려낸 lerna-lite라는 도구도 공개됐다.

원래 Lerna는 Workspace관리(의존 관계 관리), 태스크 관리(패키지의 의존 확인 후 태스크 실행), Publish 관리(버전 갱신과 CHANGELOG 작성 및 공개) 등의 기능을 갖는 도구로서 시작됐다.

Workspace 관리는 npm 7+ / Yarn / pnpm 등의 패키지 매니저에서 workspaces 기능을 지원하기 시작했다.
태스크 관리는 Turborepo나 Nx(Nx는 모든 기능 포함) 등이 보다 효율적으로 사용할 수 있는 도구로 자리매김 하고 있다.
Publish 관리는 아직 무르익은 도구는 적지만 changesets / Ship.js / lerna-lite 그리고 패키지 매니저 자체적으로 제공하는 기능이 있다.

애플리케이션 뿐 아니라 라이브러리 개발에서도 Monorepo를 널리 사용하게 되면서 Monorepo와 함께 관련 도구 등의 발전 역시 활발한 느낌이다.


헤드라인


Release 5.0.0-beta.1 · expressjs/express

github.com/expressjs/express/releases/tag/v5.0.0-beta.1

node.js express library ReleaseNote

Express 5.0.0 beta 1 릴리스. 2020년 3월 5.0.0-alpha.8 릴리스 이후 첫 5.0.0 관련 릴리스.


The File System Access API with Origin Private File System | WebKit

webkit.org/blog/12257/the-file-system-access-api-with-origin-private-file-system/

safari JavaScript IndexedDB

Safari에 구현된 File System Acccess API를 소개하는 글.
Origin 별로 분리된 Private한 파일 시스템으로 돼 있어 브라우저 밖에서는 접근할 수 없다.
File System Access API의 기본적인 사용 방법 등도 소개한다.


Release v9.4.0 · GoogleChrome/lighthouse

github.com/GoogleChrome/lighthouse/releases/tag/v9.4.0

Chrome performance ReleaseNote

Lighthouse v9.4.0 릴리스.


Deno 1.19 Release Notes

deno.com/blog/v1.19

deno ReleaseNote

Deno 1.19 릴리스.
Deno.FileDeno.FsFile으로 이름 변경하고 Deno.File를 deprecated로 변경.
의존 관계를 저장소 내의 파일로 관리하는 deno vendor 명령어 추가, Deno.FsFileDeno.Conn 등이 Web Streams에 대응.
CompressionStream / DecompressionStream 지원, console.log에서 순환 참조 표시 지원, Deno.listen가 Unix sockets에 대응.
또, unstable한 API로 Deno.getUid, Deno.networkInterfaces가 추가 됐다.


Release v1.2.0 · remix-run/remix

github.com/remix-run/remix/releases/tag/v1.2.0

React server library ReleaseNote

Remix v1.2.0 릴리스.
serverBuildTarget 옵션을 추가하여 디플로이 타겟 별로 최적화 된 출력이 가능하도록 개선, server 옵션으로 커스텀 서버를 지정할 수 있도록 개선.
Node의 빌트인 모듈을 사용하고 있는 경우에 shim이 추가되도록 변경, serverDependenciesToBundle로 CJS 용 번들을 출력할 경우 ESM 패키지를 bundle 할 수 있도록 개선.


Blog - Next.js 12.1 | Next.js

nextjs.org/blog/next-12-1

Next.js ReleaseNote

Next.js 12.1 릴리스. 앞서 만구님이 정리 해주셨으니 자세한 내용은 해당 스레드 참고.
API 서버에서 unstable_revalidate를 사용해 ISR 페이지를 revalidate 할 수 있도록, next/jest 추가, SWC 개선과 Minify 대응.
시험적인 기능으로 outputStandalone 옵션으로 Next.js를 서버로 실행시키기 위한 파일만 출력할 수 있는 기능 추가, React 18 지원 등.


Yarn 3.2 🚢🔮 Libc, Yarn Explain, Next Major, ... - DEV Community 👩‍💻👨‍💻

dev.to/arcanis/yarn-32-libc-yarn-explain-next-major--o22

yarn ReleaseNote

Yarn 3.2 릴리스.
optionalDependencieslibc 필드 추가, yarn explain 명령어 추가, UI 개선.
다음 메이저 업데이트(Yarn 4.x)에 있을 변경 예정 사항도 정리돼 있다.


업데이트


The State of JS 2021

2021.stateofjs.com/en-US/

JavaScript Survey

State of JS 2021 설문 결과가 공개됐다.
언어, 프레임워크, 도구, 라이브러리 등의 순위, 만족도, 평가 등의 설문 결과를 다양한 그래프를 활용해 제공하고 있다.
한국어도 지원하므로 관심있는 분은 살펴보길 바란다.


textarea를 커스터마이즈 할 수 있는 React 용 라이브러리를 작성했다(일본어)

zenn.dev/inokawa/articles/946ba7be927f44

JavaScript React article

textarea 요소에 대응하는 오버레이 요소를 두어 textarea 경험을 최대한 유지하면서 텍스트 꾸미기 및 이벤트를 설정할 수 있도록 확장한 리액트 라이브러리 소개.


소프트웨어, 도구, 라이브러리


JS framework for native web components | Minze

minze.dev/

WebComponents library

WebCompoennts를 만드는 데 필요한 여러가지 기능을 제공하는 프레임워크.


jimmywarting/native-file-system-adapter: File system, based on the spec reference implementation

github.com/jimmywarting/native-file-system-adapter/

node.js library polyfill

File System Access API의 polyfill 라이브러리.
대상 시스템을 어댑터로 교체할 수 있는 구조로 Node.js, Deno, IndexedDB 등을 지원한다.


ghiscoding/lerna-lite: automate your workspace version & publish by using conventional-changelog-commits

github.com/ghiscoding/lerna-lite

monorepo Tools library

lerna에서 version / publish / run 명령어만 간추린 fork 버전


Monorepo Explained

monorepo.tools/

monorepo Tools JavaScript library

monorepo의 정의를 소개하고 관련 도구를 비교한 사이트.
Babel / Gradle / Lage / Lerna / Nx / Rush / Turborepo에 대해 캐시나 분산 태스크 등 각 기능을 비교 소개한다.


도서


HTML 해부 신간 - 사양으로부터 푸는 본격 입문 | 오타 요시노리, 나카무라 나오키 | 책 | 통신 판매 | Amazon(일본어)

www.amazon.co.jp/dp/4862465277/

HTML book accessibility

2022년 4월 15일에 출간 예정.
HTML과 웹 접근성을 주제로한 기술 도서.


Pull Request to this article
JSer.info Slackに参加する