프로젝트 진행 중에 String does not match the pattern of "^(?:@[a-z0-9-*~][a-z0-9-*._~]*/)?[a-z0-9-~][a-z0-9-._~]*$". 오류를 마주했다. 프로젝트 이름에 대문자가 포함되어 생긴 오류였다. name을 작성할 때 대문자 그리고 띄어쓰기는 허용되지 않는다고 한다. 소문자로 작성하고 하이픈(-) 또는 언더바(_)는 포함될 수 있다고 한다. (맨 앞 제외) package.json이란? 프로젝트가 의존하는 패키지 리스트 프로젝트의 버전을 명시 다른 환경에서도 빌드를 가능하게 해 다른 개발자들이 쉽게 사용할 수 있게 한다. 프로젝트의 의존성 관리를 위한 명세표 정도로 생각하면 될 것 같다. package.json name 규칙 점이나 밑줄로 ..
Node
blocking, non-blocking in node.js blocking은 Node.js 프로세서에서 추가 Javascript 실행이 Javascript가 아닌 작업(파일 불러오기 등)이 완료될 때까지 기다려야하는 경우이다. 이는 Blocking 작업이 발생하는 동안 이벤트 루프가 JavaScript를 계속 실행할 수 없기 때문에 발생한다. Blocking Function JSON.stringfy 함수와 window.alert는 Blocking함수이다. 해당 작업을 마쳐야 다음 작업을 수행할 수 있다. Node.js에 있는 Blocking 메서드 const fs = require('fs'); const data = fs.readFileSync('file.md'); // blocks here until..
Node.js가 작업을 처리하는 방법 런타임 환경에서 1+1 같은 자바스크립트로 처리할 수 있는 작업은 V8 엔진을 통해서 하게 된다. 하지만 파일을 읽거나 데이터베이스 접근 등과 같은 작업은 V8으로 할 수 없다. 이런 부분은 비동기 이벤트 처리 라이브러리인 libuv를 통해 작업한다. 즉, V8이 코드를 해석하고 Node.js APIs들 중 하나의 함수를 호출하고 Node.js 바인딩을 통해서 libuv에 의해서 원하는 작업을 처리한다. node.js 오픈소스를 보면 lib은 node api의 javascript 부분(console, http, os, path, process) src는 node binding의 c++부분 이렇게 자바스크립트 코드로부터 c++ 그리고 libuv까지 연결이 된다. lib..
Node.js 크롬 v8 자바스크립트 엔진에 비동기 이벤트 처리 라이브러리인 libuv를 결합한 자바스크립트 런타임이다. 이 런타임 환경을 통해 javascript를 브라우저 밖에서 실행할 수 있다. Node.js는 프로그래밍 언어도 프레임워크도 아닌 자바스크립트 런타임이다. javascript를 실행하려면 브라우저에서 실행할 수있다. 브라우저가 없다면 javascript를 실행할 수 없다. runtime이란 런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. Node.js나 크롬등의 여러 브라우저들에서 자바스크립트가 구동되기에 Node.js나 브라우저들도 자바스크립트 런타임이다. javascript 엔진 javascript를 실행하는 소프트웨어 구성요소이다. 최초의 javascript 엔진은 단순한 ..
리액트 프로젝트를 만들 때 npx create-react-app [프로젝트이름] 을 한 번쯤은 써봤을 것이다. 이때 npx가 정확히 무엇인지 모르고 사용했는데, 이번 기회에 자세히 알아보고자 한다. npm이란? npm은 node package manager의 줄임말으로 알려져 있으며, node.js의 패키지를 관리할 수 있는 도구이다. 보통 node.js를 설치할 때 함께 설치되며 npm install ~~을 통해 패키지를 다운로드할 수 있다. 다운로드 된 파일들은 package.json 파일에 종속성이 기록되며, package-lock.json 파일에는 package.json 파일이 수정되거나 업데이트 될 때의 의존성 정보를 모두 가지고 있다. npx는? npx는 npm과 다른 관리 모듈이 아니다. n..