2013-12-22 3 views
1

난 그냥 Dart's suggested packagout layout spec을 읽고에 대한 몇 가지 질문이 있습니다다트 패키지 레이아웃

  1. 사양은 내가 lib 디렉토리에있는 모든 제 3 자 패키지를 넣어해야한다고 말한다. 그러나 pub get 또는 pub upgrade을 실행하면 해당 패키지가 packages 디렉토리로 가져옵니다. 그래서 그것은 무엇입니까?!? pub get을 실행하고 패키지를 packages으로 풀어서 수동으로 lib에 복사해야합니까? 그건 비효율적 인 것 같습니다!
  2. 사양에 따르면 API의 일부 여야하는 패키지는 lib에 들어가야하지만 내부 패키지 (API의 일부가 아님)는 lib/src에 있어야합니다. 따라서 내 프로젝트가 transmogrify이라는 일부 타사 패키지에 의존하는 경우 transmogrify 패키지가 공개 API의 일부분이며 lib에 배치되어야하고 어떤 패키지가 "비공개"이며 lib/src에 배치되어야합니까? 이것은 지루해 보인다!
  3. 다트 앱에 2 개 이상의 main() 방법이있을 수 있나요? 왜 안돼?
    • packages/**
    • build/** (pub build 제품)
    • pubspec.lock
    • 모든 다른 사람 :
    • 그냥 다음 파일 VCS는에 체크인하지한다 확인하려면?

미리 감사드립니다.

답변

2
  1. pub-get을 실행하면 모든 필수 패키지가 패키지 디렉토리로 가져옵니다. 구조는 그대로 둡니다.
  2. 제 제안은 다트 편집기에서 pubspec.yaml 파일을 열 때 "패키지 추가"에서 찾을 수있는 패키지 이름을 사용하는 것입니다.
  3. 번호 main()은 프로그램 진입 점입니다. 그래서 하나의 프로그램, 하나의 항목.
  4. 꽤 많이 나열되어 있습니다. 추가하려면 : .buildlog.
2

1) 타사 패키지를 lib 디렉토리에 넣지 마십시오.

재사용 가능한 라이브러리 패키지를 작성하려면 라이브러리를 빌드하는 파일을 lib 디렉토리에 넣으십시오.

타사 패키지는 pubspec.yaml 파일의 dependencies 또는 dev_dependencies 섹션에서 참조됩니다. 나머지는 pub에 의해 유지됩니다.

2) 부분적으로 1)로 응답해야합니다. 라이브러리 패키지의 공개 서적을 lib에 넣습니다. 공용 API로 공개해서는 안되는 라이브러리 내부는 lib 하위 디렉토리로 이동할 수 있어야합니다.

3) 저는 이것이 다트 앱을 어떻게 지정하는지에 달려 있다고 생각합니다. 다트 패키지에는 여러 주요 기능이있을 수 있습니다. 웹 디렉토리에 각각 메인 페이지가있는 항목 페이지를 더 가질 수 없습니다.

bin, test에서 더 많은 Dart 스크립트 파일을 가질 수 있습니다. 각 파일은 main을 가질 수 있습니다.

브라우저에서 항목 페이지를 열거 나 dart myscript.dart이라는 스크립트 파일을 실행하여 앱을 시작하면 호출되는 항목이 명확하게 정의됩니다.

4)

  • 당신은 패키지로하지 체크/
  • 당신 하지 빌드 체크/당신은 응용 프로그램 패키지에 대한 pubspec.lock에 확인을
  • 라이브러리 패키지의 경우 pubspec.lock을 체크인하십시오. al 그래서 In Dart and Pub, should I add pubspec.lock to my .gitignore?
  • 내가 .gitignore에있는 몇몇이이 질문을 살펴 있지만 배포
    • 아웃 (적어도 pub *에 의해) 더 이상
    • _from_packages
  • 을 사용하지 않을 것

나는 도서관과 패키지의 개념을 혼란스럽게하고 있다는 인상을 어떻게 든 가지고 있습니다. 그냥 명확히하기 위해 : 당신은 하나의 패키지 안에 하나 이상의 라이브러리를 가질 수 있습니다. 패키지의 개별 라이브러리를 개별적으로 가져올 수 있습니다 (또는 가져와야 할 경우).

+0

감사합니다. @zoechi (+1) - 그렇다면 올바르게 이해하면 다트 앱이 재사용 가능한 라이브러리를 만들지 않으면 'lib' 디렉토리가 필요하지 않습니다. – IAmYourFaja

+0

@TicketMonster 정확히 –

+0

응용 프로그램에서도 대부분의 다트 코드를 lib 폴더에 넣는 경향이 있습니다. 다음과 같이 import 할 수 있습니다 : import 'package : my_project_name/my_library.dart'; lib 폴더의 파일을 업데이트 할 때 pub을 실행할 필요가 없습니다. –