Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

Feat/options: redeploy new metainfo mechanism #5927

Merged
merged 4 commits into from
Feb 1, 2021

Conversation

mcdmaster
Copy link
Contributor

👏 解決する issue / Resolved Issues

📝 関連する issue / Related Issues

⛏ 変更内容 / Details of Changes

#5855 のデプロイ、および #5907 とのマージ以降、期待されない型拘束が行われるようになった。
その解決を図る。

  1. components: ブロックの型拘束の抑止: nuxt-property-decorator の導入
  2. 子モジュールの型拘束表現の排除: const options = { } ブロックおよび export default options の簡素化

上記それぞれにつき、対象は以下である。なお、他のカードモジュールへの横展開が必要と考えられるため、それについては別 PR で対応する。

  1. layouts/default.vue / pages/cards/_card.vue
  2. components/DevelopmentModeMark.vue / components/cards/ConfirmedCasesDetailsCard.vue
  3. (その他) packages.json / yarn.lock

📸 スクリーンショット / Screenshots

外観上の変更はないため、スクリーンショットは省略する

@mcdmaster mcdmaster mentioned this pull request Jan 23, 2021
layouts/default.vue Outdated Show resolved Hide resolved
layouts/default.vue Outdated Show resolved Hide resolved
pages/cards/_card.vue Outdated Show resolved Hide resolved
@kaizumaki
Copy link
Collaborator

@mcdmaster ご対応ありがとうございます。このPRを私の手元環境にfetchして yarn install したのですが、yarn.lockが更新されてしまいました。いま一度yarn.lockを確認していただいていいですか?

@mcdmaster
Copy link
Contributor Author

@kaizumaki yarn.lock は、nuxt-property-decoratordevDependencies に足しています。
それを指しておいででしょうか?もしも nuxt-property-decorator 以外だと、私の側ではわかりかねますスミマセン…

為念、yarn.lock を再コミットしておきました。必要に応じ、ご確認をお願いいたします

@kaizumaki
Copy link
Collaborator

@mcdmaster こちらのPRではpackage.jsonが更新されているので、このPRを引っ張ってきて私の手元で yarn install をしたのですが、その際にyarn.lockは更新されてはならないと思うんですよね(でないと、yarn.lockをgit管理している意味がないですよね)。 @mcdmaster さんの手元でいま一度 yarn install をして、その結果のyarn.lockをコミットしてもらえますか?

@mcdmaster
Copy link
Contributor Author

mcdmaster commented Jan 24, 2021

@kaizumaki 先ほど再コミットした yarn.lock は、おっしゃるとおりの手順、詳細に書くと以下の手順を実施した結果を載せています:

  1. いちど本レポにコミットした内容をローカルに再反映するための git pull
  2. yarn install の実施、および yarn dev による簡単な動作確認
  3. 2 で作成された yarn.lockgit commit および git push

もしもこれに付け足すべき、もしくは改めるべき手順がありましたら、お手数でもご教示いただけますか?

@kaizumaki
Copy link
Collaborator

あ、そうなんですね。すみません、再コミットされたyarn.lockがわかりませんでした。どのコミットですかね...?

@mcdmaster
Copy link
Contributor Author

mcdmaster commented Jan 24, 2021

@kaizumaki
コミットはこれですね。
mcdmaster@7249bc8
すぐ上のコメントで再コミットを試みたと書きました。でも、この↑コミットから結局何も変わらないので、yarn.lock のアップデートはコミット以降はありません。

あるいは、お手元でどういう変化が思いがけなく起きてしまうのか、差し支えなければご教示いただけないでしょうか?
私の環境では Windows Insider Preview などのトガった(笑)バージョンを多用しているため、それらが影響することは考えられます。
Node.js などのツール類も自分でビルドすることがあるくらいですので

@kaizumaki
Copy link
Collaborator

@mcdmaster まず git fetch upstream pull/5927/head:feature/pr-5927 としてこちらのPRを私の手元環境(macOS Big Sur)に持ってきました。その後 yarn install するとyarn.lockに変更がかかりました。差分はこちら↓です。
07945f9

@munierujp
Copy link
Contributor

参考情報として、developmentブランチの現在の最新コミットに対してnuxt-property-decoratorパッケージを追加した場合のyarn.lockの差分は、nuxt-property-decorator自体とその依存パッケージが追加されるだけになります。

@mcdmaster
Copy link
Contributor Author

再々のコミットをしておきました。

なお、yarn パッケージの新しめのバージョンでは、いち環境にプロジェクトが複数あろうとも yarn が持つ単一のリポジトリ(通常、場所はホームディレクトリ)にロックファイルを書き込みに行くようです。メリデメ等は、こちらをご参考にしてください:
https://yarnpkg.com/getting-started/qa/#should-lockfiles-be-committed-to-the-repository

私のローカル環境も、そうなっていると考えられます。とはいえ、このままでは二進も三進もいかない気がしてきましたので、いったん development ブランチから yarn.lock ファイルをローカルのリポジトリに向けてコピー(fetch)したうえで、それに対し yarn install を実施してみました。

ですので、今回のコミットでは上記の手順を踏んだ結果としての yarn.lock ファイルになります。当初提供した yarn.lock とは、明らかに内容が違うはずです。なおかつ、一方で nuxt-property-decorator も含まれています

@kaizumaki
Copy link
Collaborator

@mcdmaster うーん、やはりyarn.lockのdiffが大きすぎますね...。私の手元環境にこのPRをfetchしなおしたんですが、状況は変わらずです。

@munierujp
Copy link
Contributor

munierujp commented Jan 24, 2021

@mcdmaster GitHub上のFiles changed画面で「Hide whitespace changes」をオンにするとyarn.lockの差分が普通にGitHub上で見れる程度の量になるので、改行コードが違うのかもしれません。

スクリーンショット 2021-01-24 20 23 30

@mcdmaster
Copy link
Contributor Author

@kaizumaki
どうしてそう差分が大きくなってしまうのか、正直に言えば、ここまでやってみても私には皆目見当がつきません。もしも個人で構築した開発環境までもリリースに反映されると仮定すると(それっくらいの原因しか思いつきません)、その分の差異を解決するのはずいぶんと骨の折れる作業です。
OSS 開発環境は、参加者それぞれで千差万別です。もしもその差異がプロダクト・リリースに思いがけず反映されてしまうのなら、今後はよほど気を付けて開発をせねばなりませんね。すくなくとも、モジュールの足し引きがある作業は実質不可能とさえ思い始めています。

@munierujp
文字コードの違いは、いったんやってみる価値はありそうです。改行だけでも \r\n から \n に変えてみますね。アドバイスありがとうございます

@MaySoMusician
Copy link
Contributor

Win 10 で現時点の development のコミット( da90494 )で yarn add nuxt-property-decorator@2.9.1 をした結果、 yarn.lock の更新差分は「30行 追加」でした。具体的な差分は以下の通りです。
なお da90494 の時点で yarn install をしても yarn.lock は更新されなかったので、 da90494 時点の package.jsonyarn.lock は整合性が取れているようです。

diff --git a/yarn.lock b/yarn.lock
index 2bdc205275b..de4561606df 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6848,6 +6848,16 @@ nuxt-i18n@6.17.0:
     klona "^2.0.4"
     vue-i18n "^8.18.1"
 
+nuxt-property-decorator@2.9.1:
+  version "2.9.1"
+  resolved "https://registry.yarnpkg.com/nuxt-property-decorator/-/nuxt-property-decorator-2.9.1.tgz#60fd87b64d85519b091374c7ea4c0ce1979f6afa"
+  integrity sha512-dE2GrrGKZMhv0dHAr+Lmj+JOQfjIouINgF58QNRDFNOZXMJrXxKO5zGqvCRwmx3hxqqwht7TXHdz9w1AnvL2IA==
+  dependencies:
+    vue-class-component "^7.2.6"
+    vue-property-decorator "^9.0.0"
+    vuex-class "^0.3.2"
+    vuex-module-decorators "^1.0.1"
+
 nuxt-purgecss@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/nuxt-purgecss/-/nuxt-purgecss-1.0.0.tgz#7c275205f0b727a5822781908d684f2e094ff5e7"
@@ -10083,6 +10093,11 @@ vue-chartjs@3.5.1:
   dependencies:
     "@types/chart.js" "^2.7.55"
 
+vue-class-component@^7.2.6:
+  version "7.2.6"
+  resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4"
+  integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==
+
 vue-client-only@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/vue-client-only/-/vue-client-only-2.0.0.tgz#ddad8d675ee02c761a14229f0e440e219de1da1c"
@@ -10133,6 +10148,11 @@ vue-no-ssr@^1.1.1:
   resolved "https://registry.yarnpkg.com/vue-no-ssr/-/vue-no-ssr-1.1.1.tgz#875f3be6fb0ae41568a837f3ac1a80eaa137b998"
   integrity sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g==
 
+vue-property-decorator@^9.0.0:
+  version "9.1.2"
+  resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz#266a2eac61ba6527e2e68a6933cfb98fddab5457"
+  integrity sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==
+
 vue-router@^3.4.9:
   version "3.4.9"
   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66"
@@ -10203,6 +10223,16 @@ vuetify@^2.4.2:
   resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.3.tgz#8d6f15dde396e81f64e130d8ac0bc272e030879c"
   integrity sha512-i2/Df0U0sedlaCbft4NMbna7WXbTCBhKVYTMjBrLVzrYTTWqzSO7ZCxLuDRY7MjwQhn7AOec7ent9U/NyIICqA==
 
+vuex-class@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/vuex-class/-/vuex-class-0.3.2.tgz#c7e96a076c1682137d4d23a8dcfdc63f220e17a8"
+  integrity sha512-m0w7/FMsNcwJgunJeM+wcNaHzK2KX1K1rw2WUQf7Q16ndXHo7pflRyOV/E8795JO/7fstyjH3EgqBI4h4n4qXQ==
+
+vuex-module-decorators@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/vuex-module-decorators/-/vuex-module-decorators-1.0.1.tgz#d34dafb5428a3636f1c26d3d014c15fc9659ccd0"
+  integrity sha512-FLWZsXV5XAtl/bcKUyQFpnSBtpc3wK/7zSdy9oKbyp71mZd4ut5y2zSd219wWW9OG7WUOlVwac4rXFFDVnq7ug==
+
 vuex@^3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.0.tgz#95efa56a58f7607c135b053350833a09e01aa813"

@MaySoMusician
Copy link
Contributor

なお、yarn パッケージの新しめのバージョンでは、いち環境にプロジェクトが複数あろうとも yarn が持つ単一のリポジトリ(通常、場所はホームディレクトリ)にロックファイルを書き込みに行くようです。メリデメ等は、こちらをご参考にしてください:
https://yarnpkg.com/getting-started/qa/#should-lockfiles-be-committed-to-the-repository

こちらのコメントですが、少なくとも上記のリンク先には「いち環境にプロジェクトが複数あろうとも yarn が持つ単一のリポジトリ(通常、場所はホームディレクトリ)にロックファイルを書き込みに行く」といったことは記述されていませんでした。
また、上記ドキュメントは yarn v2 (berry) 用のものですが、本レポジトリでは Yarn 1 (Classic) が使われています(対応するドキュメントは https://classic.yarnpkg.com/en/docs )。仮にシステムに v2 がインストールされていても、ローカル上の各プロジェクトに対し明示的に migration (yarn set version berry) を行わない限り、デフォルトで v1 モードで動作するよう設計されています。

オンラインで軽く検索しても yarn が lockfile を単一のディレクトリに集積する話は見つけられませんでした。可能性としては yarn の workspaces 機能と混同・もしくは誤用しているかもしれません。もし yarnpkg/yarn#5428yarnpkg/berry#1223 をお読みになったのであればその可能性は高いです。
yarn における workspaces は、Pythonのvenvの仮想環境のようなものではなく、monorepo において多数のパッケージを一括で管理するための機能です。monorepo とは単にいくつかのパッケージを管理を簡易化するものではなく、 babelのように密接にかかわりあいのあるパッケージを管理するためのものです。本レポジトリと他のパッケージをmonorepoで管理するのはおそらく難しく、少なくともそのようには設定されていません。
yarnpkg/berry#1223 にて、現行の Yarn 2 ではworkspaces機能を使った際にプロジェクトのトップディレクトリにしか yarn.lock を生成せず、それぞれの子ディレクトリに yarn.lock を生成してくれないという話が上がっています。このissueの現象が「 yarn が持つ単一のリポジトリ(通常、場所はホームディレクトリ)にロックファイルを書き込みに行く」に一番近い気がします。繰り返しになりますがこの機能はmonorepo用のものなので、万が一 @mcdmaster さんの環境でこのような状況になっているのならば、 yarn workspaces を誤って — 少なくとも本来の目的からは外れて — 使っている可能性があります。

Yarn 2 の https://yarnpkg.com/getting-started/qa#should-lockfiles-be-committed-to-the-repository でも

Should lockfiles be committed to the repository? — Yes.
(lockfile はレポジトリにcommitすべきですか? — はい、すべきです。)

と書かれており、gitにおいてプロジェクトのディレクトリ外のファイルをcommitすることは基本的にないため、commitすべきファイルをgit管理外のホームディレクトリに生成するのは考えられにくいです。


なお、長々と書いてしまいましたが、 yarn.lock ではなく node_modules ディレクトリの中身がどこか別の単一の場所で管理されているという話でしたら、yarnはもともとそのような仕様で高速化を図っています。キャッシュディレクトリについては yarn cache dir で確認できます(私の環境では C:\Users\<username>\AppData\Local\Yarn\Cache\v6 です)。このキャッシュが破損した場合、node_modulesの中身に異常が出ることはありますが、 yarn.lock に影響することはないと思います。

@mcdmaster
Copy link
Contributor Author

@MaySoMusician ありがとうございます。とても参考になります。
まさに、workspace との間で mix-up を起こしてしまっていました。

いささか乱暴なやり方かもしれませんけれども、いったん巻き戻した上で再チャレンジしてしています。
何だか、yarn.lock を置きに行こうとすると全行 diff みたいに Github 側に見られてしまうんですよね…。
ローカルでは、nuxt-property-decorator と関連コンポーネント分のみの差分が把握されるというのに。

こうやって諸々のツール類の振舞いに戸惑わされるのは主客転倒感が拭えない、というのが正直な気持ちではあります。
こういうときは、最初に返るしかないかなあといったところです

@mcdmaster
Copy link
Contributor Author

改めて yarn.lock をコミットしてみたのですけど、ファイル中の integrity 行がことごとくはじかれてしまいます。
yarn install --check-files とか、オプションをつけてもみたのですけれども、こうなってしまいますね。

ちなみに、development ブランチを fetch して同じ環境で yarn install した際の yarn.lock との diff は、以下のようなかんじです。おおよそ想定の範囲内と言えます:

diff yarn.lock.development yarn.lock
1314,1315c1314,1317
<   version "4.8.0"
<   resolved "https://registry.yarnpkg.com/@types/browserslist/-/browserslist-4.8.0.tgz#60489aefdf0fcb56c2d8eb65267ff08dad7a526d"
---
>   version "4.15.0"
>   resolved "https://registry.yarnpkg.com/@types/browserslist/-/browserslist-4.15.0.tgz#ba0265b33003a2581df1fc5f483321a30205f2d2"
>   dependencies:
>     browserslist "*"
1317c1319
< "@types/chart.js@2.9.30":
---
> "@types/chart.js@2.9.30", "@types/chart.js@^2.7.55":
1323,1328d1324
< "@types/chart.js@^2.7.55":
<   version "2.9.29"
<   resolved "https://registry.yarnpkg.com/@types/chart.js/-/chart.js-2.9.29.tgz#73bf7f02387402943f29946012492f10bde7ed43"
<   dependencies:
<     moment "^2.10.2"
<
2347c2343
< browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.4:
---
> browserslist@*, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.4:
3481,3482c3477,3478
<   version "1.3.642"
<   resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94"
---
>   version "1.3.645"
>   resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz#c0b269ae2ecece5aedc02dd4586397d8096affb1"
3537,3538c3533,3534
<   version "2.1.0"
<   resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
---
>   version "2.2.0"
>   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
4372,4373c4368,4369
<   version "1.0.2"
<   resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49"
---
>   version "1.1.0"
>   resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
4510c4506
< graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3:
---
> graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4:
6186a6183,6191
> nuxt-property-decorator@2.9.1:
>   version "2.9.1"
>   resolved "https://registry.yarnpkg.com/nuxt-property-decorator/-/nuxt-property-decorator-2.9.1.tgz#60fd87b64d85519b091374c7ea4c0ce1979f6afa"
>   dependencies:
>     vue-class-component "^7.2.6"
>     vue-property-decorator "^9.0.0"
>     vuex-class "^0.3.2"
>     vuex-module-decorators "^1.0.1"
>
7330,7331c7335,7336
<   version "4.1.1"
<   resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.1.tgz#284cf9db9e30a90e647afad69deb7cb06881262c"
---
>   version "4.1.2"
>   resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f"
7333c7338
<     graceful-fs "^4.1.11"
---
>     graceful-fs "^4.2.4"
8758,8759c8763,8764
<   version "3.19.1"
<   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9"
---
>   version "3.20.0"
>   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
9075a9081,9084
> vue-class-component@^7.2.6:
>   version "7.2.6"
>   resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4"
>
9118a9128,9131
> vue-property-decorator@^9.0.0:
>   version "9.1.2"
>   resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz#266a2eac61ba6527e2e68a6933cfb98fddab5457"
>
9120,9121c9133,9134
<   version "3.4.9"
<   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66"
---
>   version "3.5.1"
>   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9"
9178a9192,9199
> vuex-class@^0.3.2:
>   version "0.3.2"
>   resolved "https://registry.yarnpkg.com/vuex-class/-/vuex-class-0.3.2.tgz#c7e96a076c1682137d4d23a8dcfdc63f220e17a8"
>
> vuex-module-decorators@^1.0.1:
>   version "1.0.1"
>   resolved "https://registry.yarnpkg.com/vuex-module-decorators/-/vuex-module-decorators-1.0.1.tgz#d34dafb5428a3636f1c26d3d014c15fc9659ccd0"
>
9180,9181c9201,9202
<   version "3.6.0"
<   resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.0.tgz#95efa56a58f7607c135b053350833a09e01aa813"
---
>   version "3.6.2"
>   resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"

@kaizumaki
Copy link
Collaborator

@mcdmaster うーん、まだyarn.lockのdiffが大きすぎるみたいですね...。再度、私の手元環境にPRをfetchして yarn install しましたが、やはりyarn.lockがアップデートされてしまいます。

前回のリバートの時、yarn.lockの整合性が取れていなかったことがデプロイに失敗した要因の一つなので(そのためにあらかじめtypeエラーを発見できなかった)、package.jsonに手を入れた際はこちらとしても慎重にならざるをえません。

@mcdmaster mcdmaster force-pushed the feat/options branch 2 times, most recently from 8b68c6f to 577f189 Compare January 27, 2021 15:20
@mcdmaster
Copy link
Contributor Author

いろいろと試してみたところ、どうにも Github 側の制約条件が極めて厳密のようですね。
@kaizumaki さんがおっしゃる事情も理解します。とはいえ、これ以上私が yarn.lock と戦うために時間を費やすのも、包み隠さず言うなら何だか違和感を覚えます。ほぼ1昼夜戦っていましたからね。

大まかに、試した内容を以下に示します。すべて不成功です。不成功の結果は共通しています。それは、yarn.lock ファイルのたった一部を変えた(変わった)に過ぎないのに、なぜか常に全取り換えのように Github に識別されてしまうことです。

  1. 文字コードを CR+LFLF にした(揃えた)
  2. yarn を、ワークスペースを使わない旧版、具体的には v1.10.0 にダウングレードした
  3. 同時に、Node.js 14.x から 10.x にダウングレードした
  4. 現行 development ブランチの yarn.lock をクローンしたうえで、Github Web UI 上で手修正を掛けてコミットした

何か、ほかに打つ手はあったりしますでしょうか?私はもう、我慢のスレッショルドに届きそうです(笑)

@mcdmaster mcdmaster force-pushed the feat/options branch 2 times, most recently from 3688cf2 to 04e239a Compare January 28, 2021 05:28
@mcdmaster
Copy link
Contributor Author

@kaizumaki やっておきました。でも、奇怪な(?)現象が出ています。

ご依頼を受けた時点で、変更前との差分は 500 行あまりに抑えられていました。
※スクショとっておけばよかったです…。
でも、対応後の今は、また1万行オーバーになってしまっています。

やったことと言えば、ご依頼前と完全に等しく yarn add -D nuxt-property-decorator です。
何がどう違うのか…まったく理解に苦しむというのが正直なところです

@MaySoMusician
Copy link
Contributor

@mcdmaster yarn why node-gyp を実行するとどのような結果になりますか?

@MaySoMusician
Copy link
Contributor

@mcdmaster 1万行以上の変更が出てる場合は、再び改行コードの問題が発生していると思われます。

@mcdmaster mcdmaster force-pushed the feat/options branch 8 times, most recently from b0f3b04 to 65c97b0 Compare January 28, 2021 14:07
@mcdmaster
Copy link
Contributor Author

@MaySoMusician
以下の複雑な(?)手段で難局を脱しました。おそらく、もっとスマートな方法はあるのかなあと。

  1. 現時点の yarn.lock をコミット&プッシュ
  2. コンフリクトが発生するので、それを Github 上の Web エディタで修正
  3. コミットせず、エディタのテキスト全部、すなわち修正後の yarn.lock 全体をローカルのエディタにコピー
    ※もしもコミットした場合、ここで全取っ換え1万行オーバーの表示に切り替わる
  4. 3 のコピーを新たな yarn.lock としてコミット&プッシュ
  5. コンフリクトがなくなるまで 1) ~ 4) を繰り返す

yarn why node-gyp の結果は、以下のとおりです。コマンドの進行やシステム・サイジングといった情報などは省いてあります。

=> Found "node-gyp@7.1.2"
info Has been hoisted to "node-gyp"
info Reasons this module exists

  • "workspace-aggregator-9af3af8f-cb23-46c6-97b1-6425c5d7db41" depends on it
  • Specified in "dependencies"
  • Hoisted from "project#node-gyp"

@MaySoMusician
Copy link
Contributor

@mcdmaster workspace-aggregator が出てくるあたり、やはりyarn workspaceの機能が残っていますね。
お手数ですが、以下をご確認いただけますか?

@mcdmaster さんが、ローカルで本レポジトリを管理してるディレクトリの親ディレクトリ内に、以下のように workspaces エントリを含んだ package.json は存在していますか?

{
  "private": true,
  "workspaces": ["workspace-a", "workspace-b"]
}

存在しなければ workspace 機能は使われていないとみることができると思います。

@MaySoMusician
Copy link
Contributor

こちらで簡易的に yarn workspace の機能を使って再現を試みましたところ、

  • yarn workapce を使う
  • 同じworkspace配下にある別プロジェクトにて node-gyp をdependenciesとして持つ

の2つの条件が組み合わさると、 @mcdmaster さんのような yarn.lock が出来上がってしまうようです(ただ、本プロジェクト用の yarn.lock ではなく、その親のworkspace用の yarn.lock が更新されました。おそらく「 yarn が持つ単一のリポジトリ(通常、場所はホームディレクトリ)にロックファイルを書き込みに行く」現象が現れているようです)。取り急ぎ。

@MaySoMusician
Copy link
Contributor

MaySoMusician commented Jan 28, 2021

@mcdmaster a2a96a7#diff-51e4f558fae534656963876761c95b83b6ef5da5103c4adef6768219ed76c2de
こちらのコミット、確認いたしました。
yarn workspaceについては無事に無効化できたようです。
しかし、どうも yarn.lock をゼロから再生成してしまっているようなので、まだ想定より差分が多い = 想定外のモジュールが更新されてしまっている、という状況です。

3af7431 まで reset して yarn.lock の原本を復活させ、さらに package.json で@nuxtjs/pwaを3.3.5にアップデートしたうえで yarn install を行うと、我々が一番求めている yarn.lock になるのではないかと思います。

理想のdiffは以下の通り、「36行追加 6行削除」となります

(P.S. 依然として、改行コードについては注意する必要があります)

diff --git a/yarn.lock b/yarn.lock
index 2bdc205275b..277390ccb6b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1347,15 +1347,15 @@
     chalk "^4.1.0"
     semver "^7.3.2"
 
-"@nuxtjs/pwa@3.3.4":
-  version "3.3.4"
-  resolved "https://registry.yarnpkg.com/@nuxtjs/pwa/-/pwa-3.3.4.tgz#557a7a57bc3713bcc820bc88942069af263fd045"
-  integrity sha512-aDw9xnTIPdqknvgm5uOtuhcmMedtCy8HALQ4lSb30UqLQzY0z6yOyGSq+6ShybtDW2FjaBeyhs/ooEIP0XZZ9A==
+"@nuxtjs/pwa@3.3.5":
+  version "3.3.5"
+  resolved "https://registry.yarnpkg.com/@nuxtjs/pwa/-/pwa-3.3.5.tgz#db7c905536ebe8a464a347b6ae3215810642c044"
+  integrity sha512-8tTmW8DBspWxlJwTimOHTkwfkwPpL9wIcGmy75Gcmin+c9YtX2Ehxmhgt/TLFOC9XsLAqojqynw3/Agr/9OE1w==
   dependencies:
     clone-deep "^4.0.1"
     defu "^3.2.2"
     execa "^5.0.0"
-    fs-extra "^9.0.1"
+    fs-extra "^9.1.0"
     hasha "^5.2.2"
     jimp-compact "^0.16.1"
     lodash.template "^4.5.0"
@@ -4772,7 +4772,7 @@ fs-extra@^8.1.0:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
-fs-extra@^9.0.0, fs-extra@^9.0.1:
+fs-extra@^9.0.0, fs-extra@^9.1.0:
   version "9.1.0"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
   integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
@@ -6848,6 +6848,16 @@ nuxt-i18n@6.17.0:
     klona "^2.0.4"
     vue-i18n "^8.18.1"
 
+nuxt-property-decorator@2.9.1:
+  version "2.9.1"
+  resolved "https://registry.yarnpkg.com/nuxt-property-decorator/-/nuxt-property-decorator-2.9.1.tgz#60fd87b64d85519b091374c7ea4c0ce1979f6afa"
+  integrity sha512-dE2GrrGKZMhv0dHAr+Lmj+JOQfjIouINgF58QNRDFNOZXMJrXxKO5zGqvCRwmx3hxqqwht7TXHdz9w1AnvL2IA==
+  dependencies:
+    vue-class-component "^7.2.6"
+    vue-property-decorator "^9.0.0"
+    vuex-class "^0.3.2"
+    vuex-module-decorators "^1.0.1"
+
 nuxt-purgecss@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/nuxt-purgecss/-/nuxt-purgecss-1.0.0.tgz#7c275205f0b727a5822781908d684f2e094ff5e7"
@@ -10083,6 +10093,11 @@ vue-chartjs@3.5.1:
   dependencies:
     "@types/chart.js" "^2.7.55"
 
+vue-class-component@^7.2.6:
+  version "7.2.6"
+  resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4"
+  integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==
+
 vue-client-only@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/vue-client-only/-/vue-client-only-2.0.0.tgz#ddad8d675ee02c761a14229f0e440e219de1da1c"
@@ -10133,6 +10148,11 @@ vue-no-ssr@^1.1.1:
   resolved "https://registry.yarnpkg.com/vue-no-ssr/-/vue-no-ssr-1.1.1.tgz#875f3be6fb0ae41568a837f3ac1a80eaa137b998"
   integrity sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g==
 
+vue-property-decorator@^9.0.0:
+  version "9.1.2"
+  resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz#266a2eac61ba6527e2e68a6933cfb98fddab5457"
+  integrity sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==
+
 vue-router@^3.4.9:
   version "3.4.9"
   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66"
@@ -10203,6 +10223,16 @@ vuetify@^2.4.2:
   resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.3.tgz#8d6f15dde396e81f64e130d8ac0bc272e030879c"
   integrity sha512-i2/Df0U0sedlaCbft4NMbna7WXbTCBhKVYTMjBrLVzrYTTWqzSO7ZCxLuDRY7MjwQhn7AOec7ent9U/NyIICqA==
 
+vuex-class@^0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/vuex-class/-/vuex-class-0.3.2.tgz#c7e96a076c1682137d4d23a8dcfdc63f220e17a8"
+  integrity sha512-m0w7/FMsNcwJgunJeM+wcNaHzK2KX1K1rw2WUQf7Q16ndXHo7pflRyOV/E8795JO/7fstyjH3EgqBI4h4n4qXQ==
+
+vuex-module-decorators@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/vuex-module-decorators/-/vuex-module-decorators-1.0.1.tgz#d34dafb5428a3636f1c26d3d014c15fc9659ccd0"
+  integrity sha512-FLWZsXV5XAtl/bcKUyQFpnSBtpc3wK/7zSdy9oKbyp71mZd4ut5y2zSd219wWW9OG7WUOlVwac4rXFFDVnq7ug==
+
 vuex@^3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.0.tgz#95efa56a58f7607c135b053350833a09e01aa813"

@MaySoMusician
Copy link
Contributor

@mcdmaster e4b2e6a
ローカルで yarn install したところ、上記コミットの内容で、 yarn.lock の再更新無く正常に yarn install できることを確認しました!

@mcdmaster
Copy link
Contributor Author

@MaySoMusician @munierujp @kaizumaki 皆さん、ご協力ありがとうございました!

@kaizumaki
Copy link
Collaborator

@mcdmaster おつかれさまでした!私の手元でも確認しました。うまくいきましたね!

Copy link
Collaborator

@kaizumaki kaizumaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTMです!

@kaizumaki kaizumaki added the ready-for-merge コードレビューが終わり、マージができるもの label Jan 29, 2021
@soutaito soutaito merged commit 9dd6121 into Tokyo-Metro-Gov:development Feb 1, 2021
@mcdmaster mcdmaster deleted the feat/options branch February 1, 2021 05:55
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
ready-for-merge コードレビューが終わり、マージができるもの
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants