Gitlab/Github으로 NPM모듈 사용하기

2023년 11월 12일 일요일
3분 소요
0회

프로젝트 생성

원하는 사이트에 프로젝트를 생성합니다.

INFO

public, private 모두 상관 없으나 git으로 접근할 수 있어야 하고, private일 경우 사용하는 git 인스턴스가 로그인 되어있어야 접근 가능함

개발하기

일반적인 node.js 프로젝트처럼 npm init후 개발을 진행하고, 빌드결과물을 package.json에 명시한다.

json

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

{  
  "name": "my-private-package",  
  "private": true,  
  "version": "0.0.1",  
  "type": "module",  
  "files": [  
    "dist"
  ],  
  "main": "./dist/my-private-package.umd.cjs",  
  "module": "./dist/my-private-package.js",  
  "types": "./dist/my-private-package.d.ts.js",  
  "exports": {  
    ".": {  
      "import": "./dist/my-private-package.js",  
      "require": "./dist/my-private-package.umd.cjs"  
    }  
  },  
  // ... 디펜던시 목록  
}

참조: Vite 빌드 방법 도큐먼트

배포하기

gitlab-ci 등 개발환경과 빌드환경이 다른 경우 빌드 환경에서 모듈을 당겨오지 못할 수 있습니다.
이런 경우에는 해당 프로젝트에 설정에 들어가서 deploy_token을 발급하거나 개인 access_token을 발급한 후 git+https://{username}:{token}@gitlab.example.com/example/my-private-package#{버전명}방식으로 설치하게 할 수 있습니다.
단 윈도우/맥PC에서 이렇게 사용할경우 컴퓨터의 자격증명 관리자에 해당 유저가 새로 저장이 되면서 git 인스턴스가 다른 저장소도 해당 계정으로 접근하게 될 수 있으므로 주의해야 합니다.

이런경우 cibefore_script에 아래와 같이 추가해서 사용할 수 있습니다. (항상 변경하지 않게 하기위해 #master 브랜치 사용)

yaml

1

2

3

4

5

before_script:  
  - npm uninstall my-private-package  
  - npm install git+https://{username}:{token}@gitlab.example.com/example/my-private-package#master
  # or
  # - npm install git+https://{deploy_token}@gitlab.example.com/example/my-private-package#master

설치하기

아래 커맨드를 입력하여 설치합니다.

shellscript

1

npm install git+https://gitlab.example.com/example/my-private-package#{버전명}

INFO

예시: npm install git+https://gitlab.example.com/example/my-private-package#0.0.1 버전명에는 브랜치 이름, 태그 이름을 사용할 수 있습니다.

업데이트

모듈 업데이트시에는 package.json에 명시되어있는 #{버전명}을 바꾸고 npm update {모듈명}을 실행하면 됩니다.

shellscript

1

npm update my-private-package

사용하기

일반적인 NPM모듈 사용하는 것 처럼 사용할 수 있습니다.

typescript

1

2

3

import { myPrivateFunction } from 'my-private-package';  
// or  
const { myPrivateFunction } = require('my-private-package')

Loading reactions

© 2024 Hopoduck. All rights reserved.