반응형

local file dependency 활용

설명

  • 일반 npm 모듈 추가해서 사용하는 것과 비슷해서 익숙함
  • 버저닝이 불가능하므로 local package 코드 수정 후 yarn install로 수정 사항이 바로 반영되지 않음
  • local package 코드 수정 후 수정사항 반영을 위해 별도 명령을 수행해주어야 함

방법

  • local package 경로 : ~/local-packages/my-package
  • package.json (사용하는 곳)
{
    "dependencies": {
        "@my-package": "file:local-packages/my-package"
    }
}
  • 설치
yarn install
  • 사용
import mypackage from '@my-package';
  • local package 수정사항 반영 명령어
yarn install --force
or
yarn upgrade @my-package

npm link 활용

설명

  • 명령어 수행시 local package → 글로벌 node_modules 링크 생성, 글로벌 node_modules → 로컬 node_modules로 링크 생성
  • node_modules 하위에 심볼릭 링크가 생성되는 방식이므로 local package 코드 수정시 바로 반영됨
  • 사용하기 위해 처음 프로젝트 세팅 후, npm link 명령을 수행해줘야하는 걸 염두하고 사용해야함

방법

  • local package 경로 : ~/local-packages/my-package
  • package.json (local package)
{
    "name": "my-package"
}
  • 글로벌, 로컬 node_modules에 링크 생성
npm link local-packages/my-package
  • 사용
import mypackage from 'my-package';

yarn link 활용하기

설명

  • npm link와 동일한 방식
  • yarn link는 글로벌 yarn link 디렉토리에 링크가 생성되어 관리됨

링크 생성

  • 라이브러리 프로젝트에 가서 아래 작업 수행

  • package.json

    {
        "name": "custom-module"
    }
    
  • 링크 생성

    yarn link
    

링크 연결

  • 라이브러리를 사용하는 프로젝트에 가서 아래 작업 수행

  • 링크 연결

    yarn link custom-module
    

라이브러리 사용

  • 라이브러리를 사용하는 프로젝트에 가서 import하여 사용

    import customModule from 'custom-module';
    

src 하위 디렉토리에 넣어 사용

설명

  • 가장 간단한 방법
  • local package 디렉토리에 package.json 파일이 들어가있으면 이상하게 동작하므로 삭제 후 사용해야함 (원인 불명..)

방법

  • 경로 : ~/src/local-packages/my-package
  • 사용
import mypackage from '../local-packages/my-package';

Git Repository 활용

설명

  • custom-modules 레파지토리를 만들어 코드를 작성하고, my-app 프로젝트의 dependency로 추가하여 코드를 가져다 사용하는 예시

custom-modules

  • ~/package.json

    {
        "name": "custom-modules",
        "version": "0.0.0",
        "author": "custom-modules",
        "homepage": "https://github.com/your-account/custom-modules",
        "description": "custom-modules",
        "main": "dist/index.js",
        "license": "MIT",
        "scripts": {
            "build": "babel src/main -d dist"
        },
        "devDependencies": {
            "@babel/cli": "^7.10.1",
            "@babel/core": "^7.10.1",
            "@babel/preset-env": "^7.10.1"
        }
    }
    
  • ~/.babelrc

    {
        "presets": ["@babel/preset-env"]
    }
    
  • ~/src/main/index.js

    const add = (a, b) => {
        return a + b;
    }
    
    export default add;
    
  • 모듈 설치 및 빌드

    yarn install
    yarn build
    
  • 빌드 완료 후 commit & push

    • custom-modules 레파지토리의 develop 브랜치로 commit & push

my-app

  • ~/package.json

    • 6676f855d65bd369f17416216f4288fd09be4a93 : repository 접근 권한이 있는 access token
    • #develop : 대상 브랜치 지정
    • #v1 : 해당 값 변경 후 yarn install 실행해야 레파지토리에 수정된 코드를 다시 받아와 설치함
    {
        ...
        "dependencies": {
            "custom-modules": "git+https://6676f855d65bd369f17416216f4288fd09be4a93@github.com/your-account/custom-modules.git#develop#v1",
        },
        ...
    }
    
  • ~/src/main/index.js

    import customModules from 'custom-modules';
    
    const result = customModules.add(1, 2);
    
    console.log(result);
    

참고

반응형

+ Recent posts