우노 프로젝트 파일 (.UNOPROJ) 소개

우노 프로젝트 파일 (.unoproj)

우노[Uno]는 퓨즈의 핵심 언어이며, 네이티브(iOS, Android) 앱을 만들 수 있도록 지원합니다. 우노는 C#에서 닷넷 부분을 뺐으며 가볍고 포터블하게 만들어 졌습니다. 퓨즈 프로젝트는 우노로 작성된 퓨즈 라이브러리를 참조하는 우노 프로젝트입니다.

우노 프로젝트 파일 (.unoproj)은 단순한 JSON 텍스트 파일입니다:

1
2
3
4
5
6
7
8
9
{
    "Packages": [
        "Fuse",
        "FuseJS"
    ],
    "Includes": [
        "*"
    ]
}

우노 프로젝트 파일은 앱에 어떤 라이브러리나 파일들을 포함하고 제외할지 등을 지정하는데 사용합니다. 또한, 우노 프로젝트는 다른 프로젝트의 라이브러리 프로젝트로도 사용할 수 있습니다. 둘의 차이점은 App 태그의 존재 여부로 알 수 있습니다.

Packages

“Packages” 섹션은 프로젝트에서 참조하는 패키지의 리스트입니다. 퓨즈 프로젝트를 만들기 위해 “Fuse”와 “FuseJS” 패키지를 기본적으로 추가해야 합니다. (커맨드나 대시보드로 Fuse 프로젝트를 만들면 자동으로 추가됩니다) 이로 인해 앱이 실행될 때, 퓨즈는 기본 패키지 세트를 포함할 것입니다.

여러분이 어떤 패키지를 참조하는지에 따라 앱에 필요한 퍼미션(permissions)에도 영향을 줍니다:

1
2
3
4
5
6
{
    "Packages": [
        "Fuse",
        "FuseJS"
    ]
}

Macros

우노 프로젝트 포맷은 매크로 시스템을 지원합니다. 이 기능은 Title과 Version 같은 많은 최상위 속성을 구현하는데 사용됩니다.
예를 들어, 다음 정의는 Version 매크로 속성을 설정합니다:

1
2
3
{
    "Version": "0.9.4"
}

Android.VersionName과 iOS.BundleVersion은 다음과 같이 설정합니다:

1
2
3
4
5
6
7
8
{
    "Android": {
        "VersionName": "$(Version)"
    },
    "iOS": {
        "BundleVersion": "$(Version)"
    }
}

이렇게 하면, 각각의 Version 값은 최상위 Version 매크로 속성을 이용합니다.

Projects

“Projects” 섹션은 옵션이며, 로컬 파일 시스템의 다른 우노 프로젝트를 참조합니다. 상대 경로로 지정하면 됩니다.

1
2
3
4
5
{
    "Projects": [
        "../../SomeOtherProject/SomeOtherProject.unoproj"
    ]
}

Includes와 Excludes

“Includes”와 “Excludes”는 프로젝트에 어떤 파일이나 폴더를 포함할지 하지 않을지를 지정하는 섹션입니다.

1
2
3
4
5
6
7
8
9
10
11
12
{
    "Includes": [
        "*.ux",
        "js/**/*.js",
        "SomeUnoClass.uno:Source",
        "ForeignCode.java:Java:android"
    ],
    "Excludes": [
        "js/ExcludeThisFilePlease.js",
        "node_modules/"
    ]
}

include/exclude 엔트리는 다음 형식 중 하나를 선택할 수 있습니다:

GlobPattern

아래와 같이 글롭(glob) 패턴을 사용합니다.

1
2
3
4
5
6
7
{
    "Includes": [
        "*.ux",
        "js/**/*.js",
        "Foo.uno"
    ]
}

다음의 글롭 패턴을 지원합니다:
– 중괄호 익스팬션
– 확장 글롭 매칭
– 글롭스타(**) 매칭

FileName:Type

아래 정의는 우노 컴파일러에게 UX 형식의 MainView.ux 파일 하나를 포함하라고 알려줍니다:

1
2
3
4
5
{
    "Includes": [
        "MainView.ux:UX"
    ]
}

FileName:Type:Condition

특정 타입의 파일을 포함하되, 특정 조건일 때만 기능하도록 할 수 있습니다:

1
2
3
4
5
6
7
{
    "Includes": [
        "AndroidOnly.java:Java:Android",
        "iOSOnly.hh:ObjCHeader:iOS",
        "iOSOnly.mm:ObjCSource:iOS"
    ]
}

타입의 종류들

– Glob
– Folder
– File
– UX
– Source
– Bundle
– CSource
– CHeader
– ObjCSource
– ObjCHeader
– Java
– Extensions
– Stuff

모든 속성 리스트

아래 URL에서 모든 속성의 리스트를 확인하실 수 있습니다.
https://www.fusetools.com/docs/basics/uno-projects#all-properties

[[ 동영상 강좌(재생 목록 버튼을 누르세요) ]]

Was this article helpful?

Related Articles