본문 바로가기

ETC

npm 패키지에서 붙는 골뱅이(@) 있고 없고 차이

반응형
  "devDependencies": {
    "@arcanis/sherlock": "^2.0.3",
    "@babel/core": "^7.18.10",
    "@babel/preset-env": "^7.18.10",
    "@babel/preset-react": "^7.18.6",
    "@babel/preset-typescript": "^7.18.6",
    "@types/jest": "^28.1.6",
    "@types/micromatch": "^4.0.1",
    "@types/node": "^18.17.15",
    "@types/react": "^16.8.0",
    "@types/semver": "^7.1.0",
    "@yarnpkg/cli": "workspace:^",
    "@yarnpkg/core": "workspace:^",
    "@yarnpkg/eslint-config": "workspace:^",
    "@yarnpkg/fslib": "workspace:^",
    "@yarnpkg/libzip": "workspace:^",
    "@yarnpkg/sdks": "workspace:^",
    "clipanion": "^4.0.0-rc.2",
    "esbuild-wasm": "0.17.5",
    "eslint": "^8.45.0",
    "jest": "^29.2.1",
    "pirates": "^4.0.5",
    "tslib": "^2.4.0",
    "typescript": "5.3.1-rc"

 

yarn이나 npm을 통해서 패키지를 관리하다보면 패키지에 골뱅이 문자(@)가 있는 것과 없는 것을 볼 수 있다. 

항상 크게 신경쓰지 않고 지나쳤던 부분인데, 문득 이 부분이 궁금해져서 알아봤다.

 

@의 의미

이는 Scoped package라고 해서 일종의 네임스페이스 개념으로 사용한다. 이 기능을 통해서 개인이나 조직은 자신만의 네임스페이스에 필요한 패키지드을 그룹화해서 사용할 수 있다. 이는 또한 해당 패키지를 만든 조직을 공식적으로 보장할 수 있다는 장점도 있다. 예를들어 @angular 라는 Scoped package로 시작하는 패키지는 angular 팀에서 만든 패키지임을 보장할 수 있다. 또한 패키지명 앞에 네임스페이스가 붙기 때문에 같은 패키지명을 다른 조직에서 정의해도 충돌하지 않는다는 장점도 있다. 

 

 

 

 

반응형