LoginSignup
4
4

More than 3 years have passed since last update.

@kintone/rest-api-client をGitHubからインストールする

Last updated at Posted at 2020-03-16

はじめに

@kintone/rest-api-client の開発中の機能を、GitHubからインストールして早めに使ってみました。
一般的にNPMパッケージをGitHubからインストールするときに比べて、特殊な方法が必要だったのでメモ。

注意

  • Webpackビルド環境がある前提です
  • 開発中のを勝手に使う場合、深刻なバグがある可能性もあるので自己責任で!

ディレクトリ構造

rest-api-clientは、Gitリポジトリとしては特殊な形をしています。

https://github.com/kintone/js-sdk
この@kintone/js-sdkというリポジトリ内に、サブディレクトリとしてrest-api-clientが存在します。
https://github.com/kintone/js-sdk/tree/master/packages/rest-api-client

NPMの世界では @kintone/rest-api-client という単独パッケージ扱いですが、Gitの世界では単なるサブディレクトリ。
(なんでこんな変な構成なのかは謎。こういうNPMデザインパターンもあるのか?誰か知ってたら教えてください)
こういうパターンを「モノレポ」というらしいですね。僕も最近、とあるプロジェクトでモノレポを採用してみました。この記事が分かりやすいです。
lernaを使ってnpmプロジェクトをモノレポ化する

なので、GitHubからこんな風にインストールしようとしてもエラーになります。

yarn add https://github.com/kintone/js-sdk/tree/master/packages/rest-api-client

方法その1(Gitのsubmoduleとして使用)

NPMではなく、Gitのsubmoduleとしてインストールします。

mkdir vendor
cd vendor
git submodule add https://github.com/kintone/js-sdk

自分でビルド

cd js-sdk/packages/rest-api-client/
yarn install
yarn build

こんな風にlibフォルダが出来ていたらビルド成功。

$ ls lib
KintoneAllRecordsError.d.ts       KintoneRestAPIClient.js   __tests__/  url.d.ts
KintoneAllRecordsError.js         KintoneRestAPIError.d.ts  client/     url.js
KintoneRequestConfigBuilder.d.ts  KintoneRestAPIError.js    http/
KintoneRequestConfigBuilder.js    KintoneTypes.d.ts         index.d.ts
KintoneRestAPIClient.d.ts         KintoneTypes.js           index.js

使うときは、こんな風に相対パスでjs-sdk/packages/rest-api-clientimportします。

import { KintoneRestAPIClient } from '../vendor/js-sdk/packages/rest-api-client'

これで、2020/3/16時点で未リリースのaddAllRecords関数だって使えちゃいます :smile:
image.png

方法その2(NPMモジュールとしてGitHubからインストール)

最初こっちのやり方考えてたんですが、方法1の方がいいと思ってやめました。

まず、Gitリポジトリ単位でjs-sdkごとインストールしてしまう。

yarn add https://github.com/kintone/js-sdk

そのままでは使えないので、該当ディレクトリに移動して自分でビルド

cd node_modules/@kintone/js-sdk/packages/rest-api-client/
yarn install
yarn build

使うときは、こんな風に@kintone/js-sdk配下のディレクトリをたどってimportします。

import { KintoneRestAPIClient } from '@kintone/js-sdk/packages/rest-api-client/lib'

rest-api-clientまで指定でOKかと思ったら、
rest-api-client/libまで指定しないとうまく動いてくれませんでした。

問題点

ビルド直後はうまく動くんですが、そのあと他のNPMモジュールを追加インストールしたら、せっかくビルドしたrest-api-client/libがきれいさっぱり無くなっちゃいました。インストール毎にクリーンにしてくれるんですね。。

たとえば.gitignoreで該当フォルダを除外しないようにして、libをコミットしたりすればいけますが、node_modulesの中の一部を除外するのがかなり大変だったりするので、やめといた方がよさそう・・・

一応やり方書いておきますが、こんなギャグみたいな.gitignore書いて、

.gitignore
node_modules/*
!/node_modules/@kintone
/node_modules/@kintone/*
!/node_modules/@kintone/js-sdk/
/node_modules/@kintone/js-sdk/*
!/node_modules/@kintone/js-sdk/packages/
/node_modules/@kintone/js-sdk/packages/*
!/node_modules/@kintone/js-sdk/packages/rest-api-client/
/node_modules/@kintone/js-sdk/packages/rest-api-client/*
!/node_modules/@kintone/js-sdk/packages/rest-api-client/.gitignore
!/node_modules/@kintone/js-sdk/packages/rest-api-client/lib/

さらに、こっちの.gitignoreからlibを消しておく。

node_modules/@kintone/js-sdk/packages/rest-api-client/.gitignore
 node_modules/
-lib/
 esm/
 umd/

まぁ、方法1の方が無難ですなw

おわりに

くれぐれも自己責任でね!
僕も正式リリースまでは、プロダクトコードには使いませんから!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4