TypeScript로 npm 라이브러리 작성 꿀팁

succeeding·2023년 7월 5일
0

CommonJS, ES Modules 에서 중괄호 없이 import 하기

핵심은 컴파일 된 js 결과물에 다음과 같은 코드가 포함되어야 한다는 것이다.

// index.js

module.exports = foo

이를 위해선 소스 ts 파일에서 다음과 같은 문법을 사용한다.

// index.ts

export = foo

활용

export = foo 문법을 사용하면 더 이상의 export 가 불가능하다. 다른 것들을 함께 export 하려면, foo의 프로퍼티로 추가하는 방법을 생각해볼 수 있다.

function foo(): number {return 1}
function bar(): string {return 'c'}

type TLib = {
  (): number
  bar: () => string
}

const lib = <TLib>foo
lib.bar = bar

export = foo

참고

export =

Migrating from JavaScript

npm 라이브러리 정의로 이동이 d.ts 파일로 연결되는 경우

다음 환경에서 ts로 라이브러리를 만들면 IDE에서 라이브러리의 정의로 이동했을 때, 소스 파일이 아닌 d.ts 선언 파일로 이동하게 된다.

  • src 라는 디렉터리에 index.ts 파일을 포함한 모든 ts 파일이 있음
  • build 라는 디렉터리에 tsc 컴파일 결과물이 있으며, package.json 에서 build/src/index.js 파일을 main 필드로 지정, build/src/index.d.ts 파일을 types 필드로 지정
  • .npmignore 파일을 설정하여 npm publish 할 때 컴파일한 결과물은 포함하되 ts 소스 파일은 제외한다.

ts 소스 파일을 제외하지 않으면, 정의로 이동시 ts 소스 파일로 이동할 수 있다.

기타 이유로 라이브러리에 ts 소스 파일을 노출하고 싶지 않으면, 위의 방법을 이용할 수 있을 것 같다.

0개의 댓글