플로우의 유형 정보를 npm 포장으로 함께 나눠줍니다.

2672 단어 JavaScriptflow

TL;DR;


flow는 0.19.0에서 시작합니다.js.플로우 확장자가 있는 파일이 있으면 그걸 보게 될 거야npm 봉인이 유형 정보를 제거했습니다.js 파일과 형식 정보가 있습니다.js.플로우 파일을 함께 나눠드리도록 하겠습니다.
  • 장래flow에 특대 후방 호환되지 않는 변경이 없으면 이동해야 한다
  • npm 패키지도 유형 정보 사용하기


    개발할 때 형식적인 정보를 썼더라도 일단 나눠줄 때는 떼어내서 나눠줘야 한다.취소하지 않으면 플로우를 사용하지 않은 항목require은 진행하기 어렵기 때문이다.
    하지만 그 포장을 사용할 때는 플로우를 사용하고 싶어요.flowtype/flow-typed에 자신의 라이브러리에 정보를 싣는 것은 일종의 방법이지만, 개발 단계에서 유동성을 실제 설치하면 업데이트가 번거롭고 DRY가 아예 아니다.
    어렵게 개발할 때 쓴 유형 정보는 npm 포장 리퀴드로 사용할 때 사용할 수 없나요.

    Declaration files


    왜 플로우?org의 표준 문서에는 언급되지 않았지만 0.19.0에 추가된 declation files 기능을 사용하면 간단하게 실현할 수 있습니다.
    Declation files란 간단하게 foo.jsfoo.js.flow라는 파일이 있는데 import Foo from './foo'flow를 실행하면 보러 갑니다foo.js.flow.
    형식적인 정보를 없앴다는 얘기다.js 파일과 달리 형식 정보를 보존한 파일입니다.js.플로우라는 이름으로 포장에 담으면 돼요.
    npm 패키지에 기록된 것은 패키지를 사용하는 프로젝트에 사용된flow의 버전에 따라 오류가 발생할 수 있습니다.특히 앞으로 플로우 호스트가 후방 호환되지 않는 변경이 있을 경우 포장을 사용하는 쪽의 형 검사는 통과할 수 없다.이런 상황에서보통flowconfig를 통해 그 포장을 ignore로 설정해서 극복할 수 있다고 생각합니다.

    예: yuku-t/text commplete


  • yuku-t/textcomplete
  • textcommplete는 src 디렉터리에 샘플링을 지정합니다.js 파일이 있습니다.이것은 @flow 컴파일된 후lib 디렉터리에서babel로 연결됩니다.js 파일 1, src 디렉터리와 원래 있는 그대로입니다.js.flow 파일을 생성합니다.
    package.json(발췌문)
    {
      "script": {
        "build:lib": "babel src -d lib -s && for js in src/*.js; do cp $js lib/${js##*/}.flow; done"
      }
    }
    
    결과textcompltenpm run build:lib가 제공되었을 때flow는 형식 정보를 접근할 수 있습니다.

    참고 자료


  • Version 0.19.0-0.19.0블로그 발표.Declation files에 대한 설명이 있습니다.
  • babel은 babel-preset-flow를 사용하도록 설정되었습니다. 

    좋은 웹페이지 즐겨찾기