-
Node.js 로그인 화면 만들기 2 (package.json)카테고리 없음 2022. 6. 15. 17:11
app.listen() 모듈화
서버를 띄어 주는 코드를 작성할 파일을 bin하위의 www.js로 생성한다.
www.js에서 app.listen을 이용해서
서버를 실행하는 명령어 바꾸기
package.json이라는 file을 이용을 할 것이고, 이것을 이용하면서 해당 file이 어떤 기능을 하는 file인지 알아본다.
또한 node_modules 폴더는 어떤 폴더인지 package-lock.json은 어떤 기능을 하는 file인지도 알아 본다.
npm init
# yes을 축약 옵션으로 모든 것이 기본 setting 값으로 들어간다.
npm init -y내가 만든 package 소프트웨어의 설정들을 초기화 해주는 명령
npm init 명령을 입력한 후 enter를 치면 위와 같은 문구가 쭉 뜨고, 마지막으로 package이름을 정할 수 있다. 소괄호 안에 있는 것은 default이름이다.
모든 것에 enter를 치면 다음과 같은 기본 설정으로 package.json이 생성된다.
package.json 설명
"name" : 패키지 이름이다. 해당 패키지 즉 소프트웨어를 깃허브 처럼 저장소에 올려 둘 수있다.
node의 package들을 모아 놓은 사이트
"version" : 개발한 버전이자, 배포될 버전이다.
"keyword" : npmjs.com 에서 검색시 노출여부를 결정한다.
"main" : 해당 package에 mian file
"bin" :{} binary라는 의미이고, 실행 파일이 담기게 된다.
"dependencies" : {} 의존하고 있는 package들을 나열한 것이다. 소프트웨어가 사용될 때 영향을 미치는 것들을 의미한다.
"devDependencies" : {} 개발할 때만 필요한 dependencies를 의미한다. 예를 들어 test 모듈 도구라던가, 바벨, webpack,프리디어,
"scripts" : 해당 package에서 사용하고 싶은 명령어들을 만들어 주는 것이다.
"license" : 말그대로 해당 프로젝트의 license를 지정할 수 있는 것이다. ISC는 기본 값으로 설정되는 것이고, 오픈소스 라이센스 중 하나이다.
"script"를 사용해서 node로 가동하던 server명령을 좀더 편리하게 바꿀 수 있다.
앞으로 npm start를 하면 start의 값의 해당하는 명령어가 수행 될 것이다.
node_modules
저장한 dependencies 모듈을 해당 폴더에 저장을 하게 된다. 만약 ejs와 express 모듈이 있다면, 해당 모듈이 사용된는데 설치되야 하는 모듈들 까지 한번에 설치가 된다.
express폴더에 index.js를 확인해 보면 express라는 library가 module로 export되고 있는것을 확인 할수 있다. 그래서 해당 프로젝트에서 express 모듈을 사용할 수 있는 것이다.
설치한 module들이 node_modules 폴더에 저장이 되어있기 때문에 node_modules 폴더가 없으면, 전체 소프트웨어를 실행 할 수 없다.
그런데 git 허브같은 저장소에 소프트웨어를 저장할 때는 node_modules 폴더는 저장하지 않는다. 이것이 없어도 된다는 것이다. 왜그럴까? package.json으로 dependencies 패키지들을 관리해 줄 수 있기 때문이다.
node_modules 파일을 올리지 않더라도 package.json이라는 파일만 있으면 터미널을 통해 npm install 명령어를 통해서 "dependencies"에 명시된것을 알아서 설치해준다.
그럼 package-lock.json은 왜 필요할까? => 좀 더 명확한 버전을 설치하기 위해서 이다. 소프트웨어 개발을 위해서 설치한 module들에는 version이 존재한다. 사실 package.json에 있는 version들은 range 값으로 범위가 명시되어 있는 것이다.
package-lock.json에는 좀더 명확한 version이 표시되어 있는 것을 확인 할 수 있다. 그리고 "require"을 통해서 해당 module을 사용하기 위해서 필요한 module들과 그 버전들에 대해서도 표시를 해준다.
4.17.1
정확한 해당 version
^3.1.5 (캐럿 )
해당 module이 update 되면 명시된 vesion이상의 version허용을 의미하는데
그 중에서도 가운데 있는 숫자의 상위 version허용
~1.3.7
해당 module이 update 되면 명시된 vesion이상의 version허용을 의미하는데
그 중에서도 마지막 있는 숫자의 상위 version허용
^3.1.x
뒷 자리가 x인 경우에는 어떠한 version이든 상관이 없다는 뜻이다..gitignore
gitHub 저장소에 upload되면 안되는 파일이나 폴더 같은 것들을 명시 해주면된다.
예) node_modules라는 폴더는 gitHub 저장소에 upload되면 안된다. 보통 해당 file은 용량을 많이 차지 하기 때문에 저장소에 upload하고 다시 받아오고, 하면서 많은 시간이 소요가 되기 때문이다.
**node_modules
위 와 같이 명시하면 .gitignore와 같은 경로에 있지않고, 하위 경로에 있는 것 까지 찾아서 gitignore가 적용된다.