React Native 용 OSS 라이센스 표기 생성 도구를 만들었습니다.

6896 단어 reactnativelicense
Flutter에서 사용하는 OSS 라이센스 목록을 생성하는 Dart CLI를 만들어 보았습니다. 을 읽고 React Native 버전을 만들어 보았습니다.
npm 패키지의 라이센스를 ios, android로 표시하기 위한 파일을 출력하여 이미지와 같은 라이센스 목록을 만들 수 있습니다.


리포지토리는 다음과 같습니다.
htps : // 기주 b. 코 m / k-모모 야스 / 레아 ct- 나치 ゔ ぇ
Typescript로 구현하고 있습니다.

react-native-oss-license 개요



매우 중요하지만 힘든 OSS 라이센스 관리를 지원하는 CLI 도구입니다. React Native의 개발에 이용하고 있는 npm 패키지의 라이센스의 일람을 출력합니다.
react-native-oss-license 는 npm 패키지 라이센스만 지원합니다. iOS·Android의 라이브러리에 대해서는, 각각 라이센스 표기를 자동화하는 툴이 있으므로 그들과 병용을 상정하고 있습니다. npm 패키지에서 출력한 라이센스 목록과 함께 사용하는 도구로 출력한 라이센스 목록을 병합합니다.
react-native-oss-license가 지원하는 것은 npm 패키지의 라이센스 일람을 출력하는 것까지로, 병합 부분은 유저에게 맡겨지고 있어 최종적으로 앱으로 라이센스를 표시하려면 다음과 같은 작업을 하는 것에 됩니다.
  • 도구로 iOS 라이브러리 표기법 생성
  • react-native-oss-license 에서 1. 형식에 맞는 파일을 출력합니다
  • 1.2의 결과 병합
  • Android 라이브러리 표기법을 도구로 생성
  • react-native-oss-license에서 3. 형식에 맞는 파일을 출력합니다
  • 4.5의 결과 병합
  • 앱에서 목록을 표시하도록 구현

  • 또, 현재 서포트하고 있는 툴은 LicensePlist , license-tools-plugin , AboutLibraries 의 3개입니다.

    각 도구의 입력 및 출력



    iOS에서는 LicensePlist을 자주 사용하며, 출력된 plist 파일을 이용하여 설정 앱에 라이센스 목록을 표기할 수 있습니다.
    Android에서는 oss-license-plugin 또는 license-tools-plugin , AboutLibraries 에서 앱에 라이센스를 표시하는 Activity, Fragment 또는 정적 파일을 얻을 수 있습니다.

    react-native-oss-license에서는 package.json, node_modules 이하의 파일을 입력에, 위의 iOS, Android의 툴에 맞춘 형식의 파일을 출력합니다.

    공구당 입출력


    도구
    플랫폼
    입력
    출력


    LicensePlist
    iOS
    cocoapods, Carthage, Swift Package Manager 종속성 설명, 라이브러리 파일
    plist

    AboutLibraries
    안드로이드
    build.gradle
    활동

    license-tools-plugin
    안드로이드
    build.gradle
    yml, yml에서 생성되는 html 등

    react-native-oss-license
    iOS, Android(React Native)
    package.json, node_modules 다음 파일
    plist, AboutLibraries 용 strings.xml, liense-tools-plugin 용 yml


    처리의 흐름은 다음과 같이 되어 있습니다.
    1. package.json에서 이용하고 있는 패키지의 정보를 취득
    2. node_modules 이하에서 LICENSE 파일 취득
    3. iOS, Android의 각 형식에 맞는 파일을 출력

    CLI



    CLI에는 다음과 같은 옵션이 있습니다.
    > cd {project-root}
    > react-native-oss-license --help
    Usage: react-native-oss-license [options]
    
    Options:
      -f, --format <format>       require output format. options:[settings-bundle,license-tools-plugin,about-libraries]
      --dev                       include devDependencies (default: false)
      --depth <depth>             dependencies depth (default: null)
      --output-path <outputPath>  specify path where output file (default: "default path")
      --json                      output json to stdout (default: false)
      --only-direct-dependency    output only dependencies you write packages.json. (default: false)
      --version                   show current version
      -h, --help                  output usage information
    
    > react-native-oss-license --format settings-bundle
    output settings-bundle format to 'ios/com.k-tomoyasu.react-native-oss-license.Output'
    
    --format 로 서포트하고 있는 형식을 지정 ( settings-bundle or license-tools-plugin or about-libraries ) 하는지, --json 옵션을 지정하는 것이 필수가 되어 있습니다.--format 옵션 지정시는 입력한 형식의 파일을 출력해, --json 를 지정했을 때는 표준 출력에 라이센스 정보를 표시합니다. json을 성형하여 독자적인 형식으로 라이센스 표기하는 경우를 상정한 것입니다.

    결과



    settings-bundle(iOS)





    about-libraries(Android)





    license-tools-plugin(Android)





    감사의 말



    전 자료 기사 Flutter에서 사용하는 OSS 라이센스 목록을 생성하는 Dart CLI를 만들어 보았습니다.리포지토리 가 매우 도움이 되었습니다. 감사합니다!

    좋은 웹페이지 즐겨찾기