Docs Menu
Docs Home
/ /
Atlas App Services
/

외부 종속성

이 페이지의 내용

  • 외부 패키지 추가
  • 이름 및 버전별로 패키지 추가
  • 종속성 디렉토리 업로드
  • 함수에서 패키지 가져오기
  • 전체 모듈 가져오기
  • 모듈 하위 폴더 가져오기

외부 종속성은 직접 구현할 수 없거나 구현하고 싶지 않은 코드가 포함된 라이브러리입니다. 예를 들어 외부 서비스를 위한 공식 라이브러리를 사용하거나 데이터 구조 또는 알고리즘의 사용자 정의 구현을 사용할 수 있습니다.

Atlas App Services는 종속성을 자동으로 변환하고, 대부분의 내장 Node.js 모듈도 지원합니다.

참고

나만의 모듈 만들기

대부분의 npm 모듈은 타사에서 작성하지만, 애플리케이션 에 특정한 로직을 포함하도록 자체 npm 모듈을 만들어 게시할 수도 있습니다. 모듈을 Node.js 커뮤니티에 제공하거나 비공개로 예약할 수 있습니다. 자세한 내용은 레지스트리에 패키지 기여 에 대한 npm 가이드 를 참조하세요. .

외부 종속성을 가져와서 사용하려면 먼저 애플리케이션에 종속성을 추가해야 합니다. 이름으로 패키지를 추가하거나 종속성의 디렉토리를 업로드할 수 있습니다.

중요

기존 종속성 재정의

앱에서 사용할 외부 패키지를 지정하는 데는 한 번에 한 가지 방법만 사용할 수 있습니다. 종속성을 지정하는 데 사용한 가장 최근 방법이 정보의 소스이며, 이 방법이 이전 사양을 재정의합니다.

예를 들어, UI를 통해 이름으로 추가한 패키지는 업로드된 종속성 디렉토리에 있는 패키지를 포함하여 이전에 추가한 동일한 패키지의 모든 사본보다 우선합니다.

npm 레지스트리 에서 패키지를 추가할 수 있습니다. 이름으로 앱 에 추가합니다. 특정 버전을 추가하거나 최신 버전을 사용할 수 있습니다.

1
  1. 왼쪽 탐색 메뉴에서 Functions 을 선택합니다.

  2. 0}Dependencies 탭을 선택합니다.

  3. Add Dependency 버튼을 클릭합니다.

2

이전 단계의 조치에서 팝업되는 Add Dependency 모달 창에 다음 정보를 포함합니다.

필드
설명
패키지 이름 정의
npm 패키지의 이름입니다.
패키지 버전
선택 사항입니다. 사용할 종속성의 특정 버전입니다. 기본적으로 App Services는 사용 가능한 최신 버전을 사용합니다.

패키지 추가를 시작하려면 Add 버튼을 클릭합니다.

창 하단의 진행률 추적기에서 종속성 추가 상태를 추적할 수 있습니다. 진행률 추적기는 패키지가 성공했는지 실패했는지 알려주는 메시지를 제공합니다. 실패 메시지에는 패키지를 추가할 수 없는 이유에 대한 추가 정보가 포함되어 있습니다.

초안이 활성화된 경우 이러한 변경 사항을 적용하려면 Review & Deploy도 클릭해야 합니다.

3

App Services가 종속성을 성공적으로 추가하면 Dependencies 탭의 종속성 목록에 표시됩니다.

1

다음 명령을 사용하여 앱을 기기로 가져옵니다.

appservices pull
2
  1. 앱의 /functions 디렉토리 에 package.json 을 만듭니다. 기존 package.json 파일 을 복사하거나 npm init 를 실행 하고 프롬프트에 따라 이 작업을 수행할 수 있습니다.

  2. npm install <dependency-name> 을(를) 실행 하여 종속성을 추가합니다.

3
  1. 앱의 루트 디렉토리로 Go 합니다.

    cd path/to/MyRealmApp
  2. package.json 에 모든 종속성이 포함된 최신 버전의 앱 을 푸시합니다.

    appservices push --include-package-json
  3. CLI 프롬프트에 따라 작업에 종속성을 포함할 것인지 확인합니다. CLI가 앱에 종속성을 추가하기 시작합니다.

4

종속성 추가가 완료되면 CLI가 모든 패키지가 성공적으로 추가되었는지 알려줍니다.

설치 중에 실패하는 경우 종속성이 설치되지 않습니다. package.json 파일에서 실패한 종속성을 제거하고 다시 시도하세요.

1

Github의 지정된 브랜치에 구성 업데이트를 푸시할 때마다 앱을 다시 배포할 수 있도록 Github 자동 배포를 활성화 하세요.

2

다음 명령을 사용하여 앱을 기기로 가져옵니다.

appservices pull
3
  1. 앱의 /functions 디렉토리 에 package.json 를 만듭니다. 기존 package.json 파일 을 복사하거나 npm init 를 실행 하고 프롬프트에 따라 이 작업을 수행할 수 있습니다.

  2. npm install <dependency-name> 을(를) 실행 하여 종속성을 추가합니다.

4

Git 다음 명령을 사용하여 package.json 의 모든 종속성이 포함된 최신 버전의 앱 을 Github 에 푸시합니다.

git push origin main
5

Atlas App Services Github 앱은 커밋을 푸시하면 업데이트된 앱 구성을 자동으로 배포합니다. Atlas App Services UI의 Deployment 화면에서 배포 상태를 확인하고 모든 패키지가 성공적으로 추가되었는지 확인할 수 있습니다.

배포서버 중에 실패하는 경우 종속성이 설치되지 않습니다. package.json 파일 에서 실패한 종속성을 제거하고 다시 시도하세요.

압축된 패키지의 node_modules 디렉토리를 앱에 업로드할 수 있습니다. 압축된 종속성 디렉토리는 15MB를 초과할 수 없습니다.

1

외부 종속성을 업로드하려면 먼저 Node.js 패키지가 하나 이상 포함된 로컬 node_modules 폴더가 있어야 합니다. 다음 코드 스니펫을 사용하여 업로드하려는 종속성을 로컬에 설치할 수 있습니다.

npm install <package name>

node_modules 폴더가 아직 없는 경우 이 명령은 자동으로 폴더를 만듭니다.

참고

다른 설치 방법

package.json을 구성하고 npm install 명령을 실행하여 package.json 목록에 있는 모든 패키지(및 해당 종속성)를 설치할 수도 있습니다.

npm 및 node_modules에 대해 자세히 알아보려면 npm 문서를 참조하세요.

2

이제 모든 npm 모듈을 다운로드했으므로 App Services에 업로드할 수 있도록 아카이브에 패키지화해야 합니다. node_modules 폴더를 포함하는 아카이브를 만듭니다.

tar -czf node_modules.tar.gz node_modules/

참고

지원되는 아카이브 형식

Atlas App Services는 .tar, .tar.gz, .tgz.zip 아카이브 형식을 지원합니다.

3

종속성이 포함된 아카이브를 만든 후에는 App Services UI 또는 App Services CLI를 사용하여 종속성 아카이브를 업로드할 수 있습니다:

  1. 왼쪽 탐색 메뉴에서 Functions 을 선택합니다.

  2. 0}Dependencies 탭을 선택합니다.

  3. Upload 버튼을 클릭합니다.

  4. 파일 선택기에서 방금 만든 node_modules.tar.gz 아카이브를 선택하고 열기를 클릭합니다. App Services는 아카이브 파일을 자동으로 업로드하며, 인터넷 연결 속도와 종속성 아카이브의 크기에 따라 몇 분 정도 소요될 수 있습니다.

  5. 작업의 성공 또는 실패에 관계없이 App Services는 작업의 성공 또는 실패를 나타내는 배너를 표시합니다. 성공하면 Dependencies 탭에 종속성 아카이브에 포함된 종속성 목록이 표시됩니다. 초안이 활성화된 경우 이러한 변경 사항을 적용하려면 Review & Deploy도 클릭해야 합니다. 초안을 비활성화하면 종속성 아카이브의 크기에 따라 5~60초 이내에 변경 사항이 적용됩니다.

  1. /functions 디렉토리 에 node_modules 아카이브를 추가합니다.

    mv node_modules.tar.gz ./myapp/functions
  2. --include-node-modules 옵션을 사용하여 애플리케이션 을 푸시합니다.

    appservices push --include-node-modules

앱에 추가한 기본 제공 모듈과 외부 패키지를 가져온 다음, 이를 함수에서 사용할 수 있습니다. 패키지를 가져오려면 함수 본문에서 패키지 이름을 사용해 require()를 호출합니다.

중요

모듈은 어디에서 가져올 수 있나요?

Node.js 프로젝트는 일반적으로 각 파일의 전역 범위에 require() 호출을 배치하지만 App Services에서는 이 패턴을 지원하지 않습니다. 반드시 함수 범위 내에 App Services require() 호출을 배치해야 합니다.

exports = () => {
const R = require("ramda");
return R.map(x => x*2, [1,2,3]);
}
exports = function(arg){
const cloneDeep = require("lodash/cloneDeep");
var original = { name: "Deep" };
var copy = cloneDeep(original);
copy.name = "John";
console.log(`original: ${original.name}`);
console.log(`copy: ${copy.name}`);
return (original != copy);
};

돌아가기

Global Modules