Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSS Modules使う #7810

Open
syuilo opened this issue Sep 18, 2021 · 25 comments
Open

CSS Modules使う #7810

syuilo opened this issue Sep 18, 2021 · 25 comments
Labels
packages/frontend Client side specific issue/PR 💚Refactor Rewriting code without changing behavior

Comments

@syuilo
Copy link
Member

syuilo commented Sep 18, 2021

Summary

被りを防ぐためにランダムな名前付ける必要とかが無くなる
が、.foo > .barのようなセレクタが書けないという問題があり、今まで使ってなかった

@syuilo syuilo added ✨Feature This adds/improves/enhances a feature 💚Refactor Rewriting code without changing behavior and removed ✨Feature This adds/improves/enhances a feature labels Sep 18, 2021
@syuilo syuilo added the packages/frontend Client side specific issue/PR label May 5, 2022
@syuilo
Copy link
Member Author

syuilo commented Jul 10, 2022

機能が貧弱で、SCSSを使っているのにもかかわらず前世代的なCSSを書かなきゃいけなくなるためやらない

@syuilo syuilo closed this as not planned Won't fix, can't repro, duplicate, stale Jul 10, 2022
@syuilo
Copy link
Member Author

syuilo commented Jan 3, 2023

やっぱやりたい

@syuilo
Copy link
Member Author

syuilo commented Jan 9, 2023

比較的複雑と思われるMkNoteをCSS Modulesでフラットに書き直してみたけど思ってたより見にくくもないかも

<style lang="scss" module>

@syuilo
Copy link
Member Author

syuilo commented Jan 9, 2023

むしろクラス名が一意になることでファイル内検索とかしやすくなったかも

@acid-chicken
Copy link
Member

(でしょ?)

@tamaina
Copy link
Member

tamaina commented Jan 12, 2023

クラス名がランダム生成になったためカスタムCSSが無意味になってしまった…と思ったけどカスタムCSS廃止するんだっけ

(ハッシュせずにファイル名とクラス名を使うのはダメかしら?)

@tamaina

This comment was marked as off-topic.

@tamaina
Copy link
Member

tamaina commented Jan 12, 2023

よく考えたらファイル名-クラス名が変更されれば崩壊する事実は変わらないので、ファイル名とクラス名のどちらをハッシュ化に含めようと含めまいと関係ないな

@syuilo
Copy link
Member Author

syuilo commented Jan 12, 2023

クラス名がランダム生成になったためカスタムCSSが無意味になってしまった…と思ったけどカスタムCSS廃止するんだっけ

予定は今のところない

@syuilo
Copy link
Member Author

syuilo commented Jan 12, 2023

特定のクラスに対するスタイルはできないかもしれないけど(そもそもこの用途では非推奨)、普通にHTMLに対してフォント上書きとかは引き続きできる

@syuilo
Copy link
Member Author

syuilo commented Jan 12, 2023

よく考えたらファイル名-クラス名が変更されれば崩壊する事実は変わらないので、ファイル名とクラス名のどちらをハッシュ化に含めようと含めまいと関係ないな

あとファイル名もクラス名も同じでも間に1個divが入るとかでもセレクタによっては壊れそう

@tamaina
Copy link
Member

tamaina commented Jan 15, 2023

ファイル名はフルパスが突っ込まれるのでビルドした環境によってクラス名が違うという話を聞いた(しゅいろの意図に反してまだこの話をするのかという感じではあるけど)

@CyberRex0
Copy link
Contributor

CyberRex0 commented Jan 15, 2023

https://github.com/misskey-dev/misskey/blob/develop/packages/frontend/vite.config.ts#L67
ちゃっかり取り込まれてた(ありがとうございます

これをベースにして、production時はハッシュ化、それ以外ではそのままというふうにすればよさそう

generateScopedName: (name, filename, css) => {
	const hashsrc = (path.relative(__dirname, filename.split('?')[0]) + '-' + name).replace(/[\\\/\.\?&=]/g, '-').replace(/(src-|vue-)/g, '');
	if (process.env.NODE_ENV === 'production') {
		return 'x' + toBase62(hash(hashsrc)).substring(0, 4);
	} else {
		return hashsrc;
	}
},

@CyberRex0
Copy link
Contributor

@syuilo@misskey.io ポン

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

特定のクラスに対するスタイルはできないかもしれないけど(そもそもこの用途では非推奨)、普通にHTMLに対してフォント上書きとかは引き続きできる

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

特定のクラスに対してスタイルを当てられるようにすると、ちょっとした内部のリファクタリングでもユーザーに影響することになり苦情がくることになる

@CyberRex0
Copy link
Contributor

上記に挙げたようなハッシュの計算にすれば、少なくともソースツリーが変わるかクラス名が変わるまでは同じクラス名が使えるから良いと思うんだけどな
そんなに頻繁に変えるものじゃないだろうし

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

いやMisskey開発においては頻繁に変わるよ

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

あとクラス名が長いとバンドルサイズに僅かに影響を与えそう

@CyberRex0
Copy link
Contributor

#7810 (comment)
これこれ

ハッシュ化の元になる文字列を frontendのソースディレクトリから見た相対パスのソースパス+元のクラス名 にする。(例: components-MkButton-inline) 相対パスなので環境にほとんど左右されない。
productionのときはハッシュ化をするので変換後のクラス名は短くなる
非productionのときは上の元の文字列がそのまま使われる、長くても問題はないと思うから

元のクラス名ってランダムじゃないでしょ?

@CyberRex0
Copy link
Contributor

どうなんだろ :thinkhappy:

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

特定のクラスに対してスタイルを当てられるようにすると、ちょっとした内部のリファクタリングでもユーザーに影響することになり苦情がくることになる

これについてはどうじゃろ

@CyberRex0
Copy link
Contributor

不可避なものだって言ったら適当すぎるか…

@tamaina
Copy link
Member

tamaina commented Jan 16, 2023

いやMisskey開発においては頻繁に変わるよ

クラス名がコロコロ変わるイメージは個人的にはあまりないかも

@syuilo
Copy link
Member Author

syuilo commented Jan 16, 2023

updated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packages/frontend Client side specific issue/PR 💚Refactor Rewriting code without changing behavior
Projects
None yet
Development

No branches or pull requests

4 participants