지난번 18버전 포스팅을 올렸지만 이미 LTS버전이 20까지 올라왔기 때문에 20버전 업데이트 내역도 정리하고 싶어졌다
이 중에서 몇 개만 정리해보자
Node.js 권한 모델은 실행 중에 특정 리소스에 대한 액세스를 제한하기 위한 실험적인 메커니즘입니다.
--allow-fs-read
--allow-fs-write
--allow-child-process
--allow-worker
이러한 플래그를 활성화하기 위해 개발자는 원하는 권한과 함께 --experimental-permission 플래그를 사용할 수 있습니다.
예를 들어, 다음 명령을 실행하면 전체 파일 시스템에 대한 읽기 및 쓰기 액세스가 모두 허용됩니다.
node --experimental-permission --allow-fs-read=* --allow-fs-write=* index.js
개발자는 쉼표로 구분된 값을 플래그에 전달하여 파일 시스템 액세스를 위한 특정 경로를 지정할 수도 있습니다. 예를 들어, 다음 명령은 /tmp/ 폴더에 대한 쓰기 액세스를 허용합니다.
node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read=/home/index.js index.js
권한 모델이 활성화되면 프로세스 개체의 새로운 권한 속성을 사용하여 런타임 시 특정 권한이 부여되었는지 확인할 수 있습니다.
process.permission.has('fs.write'); // true
process.permission.has('fs.write', '/home/nodejs/protected-folder'); // true
이러한 기능은 아직 실험적이며 향후 Node.js 릴리스에서 변경될 수 있습니다.
관련 문서 : https://nodejs.org/api/permissions.html#process-based-permissions
로더(--experimental-loader=./foo.mjs)를 통해 제공되는 사용자 정의 ES 모듈 수명 주기 후크는 이제 기본 스레드와 격리된 전용 스레드에서 실행됩니다.
브라우저 동작에 맞춰 import.meta.resolve()는 이제 동기식으로 반환됩니다. 로더 작성자가 원하는 경우 사용자 로더의 해결 후크는 비동기 상태로 유지될 수 있으며 import.meta.resolve는 여전히 애플리케이션 코드에서 동기적으로 반환됩니다.
평소와 같이 V8 엔진의 새 버전이 Node.js(Chromium 113의 일부인 버전 11.3으로 업데이트됨)에 포함되어 향상된 성능과 다음을 포함한 새로운 언어 기능을 제공합니다.
안정적인 테스트 실행기에는 다음을 포함하여 테스트 작성 및 실행을 위한 구성 요소가 포함되어 있습니다.
describe
, it
/test
and hooks to structure test filesnode --test
for running multiple test files in parallelThe test runner also includes some parts that are not yet stable, including reporters and code coverage.
새로 구성된 Node.js 성능 팀과 함께 마지막 주요 릴리스 이후 성능에 대한 초점이 새롭게 바뀌었습니다. Node.js 20에는 URL, fetch() 및 EventTarget을 포함하여 런타임의 기본 부분에 대한 많은 개선 사항이 포함되어 있습니다.
{
"main": "hello.js",
"output": "sea-prep.blob"
}
node --experimental-sea-config sea-config.json
이러한 변경은 새로운 사용 사례를 여는 SEA(Single Executable Apps)에 여러 공존 리소스를 내장할 수 있는 가능성을 허용하기 위해 이루어졌습니다.
이 프로젝트는 Node.js 내의 WASI 구현에 대해 계속해서 작업하고 있습니다.
주목할만한 진전은 실험적이지만 WASI를 활성화하는 데 더 이상 명령줄 옵션이 필요하지 않다는 것입니다.
Node.js 20으로 애플리케이션과 모듈을 테스트하면 최신 Node.js 변경 사항 및 기능과 프로젝트의 향후 호환성을 보장하는 데 도움이 됩니다.
또한 Node.js 14가 2023년 4월에 지원 종료될 예정이므로 Node.js 18 또는 Node.js 20(LTS)으로 업그레이드할 계획을 세우는 것이 좋습니다.
Node.js 16(LTS)은 OpenSSL 1.1.1 지원 종료와 동시에 2024년 4월부터 예정된 2023년 9월에 지원 종료될 예정입니다.