NodeJS - require, npm

모듈에 대해서

Posted by Yan on January 19, 2021

Exploring Modules

require

모듈을 가지고 오는 방법 require()

  • app.js

    1
    
    const math = require("./math");
    
    • 모듈을 절대 경로로 찾을 때는 모듈 이름을 ‘/’로 시작하면 된다. 예를 들어, require(‘home/marco/foo.js’)는 /home/marco/foo.js 파일을 로드한다.
    • 모듈을 상대 경로로 찾으려면 모듈 이름이 ‘./’로 시작하면 된다. 즉, foo.js라는 파일에서 require(‘./circle’)라고 호출하면 같은 디렉토리에 있는 circle.js를 로드한다.
    • ’/’이나 ‘./’로 시작하지 않으면 그냥 파일이 아니라 “코어 모듈”이나 node_modules 폴더에 있는 모듈을 찾는다.
  • math.js

    1
    2
    3
    4
    5
    6
    7
    
    module.exports = "hello";
    //또는
    const add = (x, y) => x + y;
    module.exports.add = add;
    //또는
    exports.add = add;
    exports.square = square;
    
  • app.js 구조분해할당도 가능.

1
const { add, square } = require("./math");

exports는 module.exports의 참조이다. 모듈을 추가할 때만 사용할 수 있다. 생성자같은 단일 아이템을 export한다면 module.exports를 직접 사용해야 한다.

  • require()는 module.exports를 리턴한다.

index.js

  • 파일명 index.js는 entry point같은 역할을 한다. directory에서 main이 되는 파일이다.

  • require(file이 아닌 directory 이름)을 했을 때, 자동적으로 index.js에서 export한 파일이 불러진다.

npm

  • npm i : local install
  • npm i -g : global install
  • js 파일에서 npm 기능을 쓰려면
1
const cowsay = require("cowsay");

cowsay라는 npm을 터미널에서 설치한 뒤 require로 불러옴

1
  npm link cowsay

terminal에서 npm link로 연결해줌 -> node index.js로 실행했을 때 cowsay가 작동된다.

예제

npm에서 두 가지 패키지를 다운받아 사용해보기

  • 문장을 입력받으면 어느 나라의 언어인지 나라이름을 3글자 코드로 반환해주는 franc
  • 나라 3글자 코드를 국가 이름으로 반환해주는 langs
1
2
3
4
5
6
7
8
const franc = require("franc");
const langs = require("langs");

const input = process.argv[2];
const langCode = franc(input);

const language = langs.where("3", langCode);
console.log(language.name);

결과

node index.js "bonjour Vincent"
//French