SlideShare a Scribd company logo
monorepoによる複数のアプリ管理
とrn-cli.config
@natural_clar
自己紹介
Jesse
株式会社CureApp.
アメリカ人
フルスタックエンジニア
@natural_clar
CureApp
治療アプリの開発
Universal JS
Typescript, React, ReactNative, Node
typeの共有
ドメインの共有
monorepo
monorepoとは
複数の子パッケージ
lernaやyarn workspaces
https://github.com/lerna/lerna
@babelやcreate-react-appで使われている
root/
├ packages/
│  └ assets/
│ └src
│ └package.json
│ └ interfaces/
│ └src
│ └package.json
│ └ core-v1/
│ └src
│ └package.json
│ └ core-v2/
│ └src
│ └package.json
│ └ newApp-v1/
└ package.json
なぜmonorepoを?
複数バージョンの同時並行開発
同ドメインを使う複数アプリの開発
平和な世界!
エラーの嵐!
複数のreact-nativeを読み込んでしまう
monorepo上のassetsを読み込まない
救世主
rn-cli.config
rn-cli.config とは
react-nativeのbundlerであるmetroの設定ファイル
react-nativeでtypescriptを使用する為にも必要
解決策
他のパッケージのreact-nativeをblacklistにいれる
依存先の入っている子パッケージをwatchFoldersでWatchする
const blacklist = require('metro-config/src/defaults/blacklist')
const fs = require('fs')
// monorepo内の他のPackageをWatchする
const watchFolders = [
path.resolve(__dirname, '../..'),
]
// monorepo内にある他のReact-nativeのパスをBlacklistに入れる
const workspacesBlacklist = ['.DS_Store', 'lib', 'CurrentApp']
const workspaces = fs
.readdirSync('..')
.filter(w => !workspacesBlacklist.includes(w))
module.exports = {
// monorepoの中にあるRNのパスを解決させる
resolver: {
blacklistRE: blacklist(
workspaces.reduce(
(acc, workspacePath) =>
acc.concat([
new RegExp(
path.join(workspacePath, 'node_modules', 'react-native', '.*')
),
new RegExp(
path.join(
workspacePath,'node_modules','.*','react-native','.*')
),
]),
)
),
},
コードは割愛
問題はまだある
RN 0.57.2以降から
子パッケージ内の画像を読み込まない
https://github.com/facebook/metro/issues/290
とりあえず画像は各パッケージに
ありがとうございました

More Related Content

Similar to monorepoによる複数のアプリ管理とrn-cli.config

React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmクラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
Daisuke Nagata
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
Rui Kimura
 
Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊
imShining @DevCamp
 
Pre react native0504
Pre react native0504Pre react native0504
Pre react native0504
卓馬 三浦
 
Tech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LTTech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LT
terurou
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
Kouhei Sutou
 
Getting started with node.js
Getting started with node.jsGetting started with node.js
Getting started with node.js
kouzouman
 
Harmoware-VIS Tutorial
Harmoware-VIS TutorialHarmoware-VIS Tutorial
Harmoware-VIS Tutorial
Nobuo Kawaguchi
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Takashi Okamoto
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Hitoshi Kurokawa
 
JavaScriptとCollection
JavaScriptとCollectionJavaScriptとCollection
JavaScriptとCollection
Kazuhiro Karino
 
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
 
Introduce React Native
Introduce React NativeIntroduce React Native
Introduce React Native
GMO-Z.com Vietnam Lab Center
 
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
Genaris Omics, Inc.
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
 

Similar to monorepoによる複数のアプリ管理とrn-cli.config (20)

React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmクラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
 
Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊Android程序的编译,安装和运行 | 小米科技 汪文俊
Android程序的编译,安装和运行 | 小米科技 汪文俊
 
Pre react native0504
Pre react native0504Pre react native0504
Pre react native0504
 
Tech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LTTech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LT
 
20131227_appium+rspec
20131227_appium+rspec20131227_appium+rspec
20131227_appium+rspec
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
Getting started with node.js
Getting started with node.jsGetting started with node.js
Getting started with node.js
 
Harmoware-VIS Tutorial
Harmoware-VIS TutorialHarmoware-VIS Tutorial
Harmoware-VIS Tutorial
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 
JavaScriptとCollection
JavaScriptとCollectionJavaScriptとCollection
JavaScriptとCollection
 
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Introduce React Native
Introduce React NativeIntroduce React Native
Introduce React Native
 
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
NGS現場の会第4回研究会 モーニング教育セッション 配布用資料 「Windows/Mac環境で始めるNGSデータ解析入門」
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 

monorepoによる複数のアプリ管理とrn-cli.config