Windows 環境で開発中に、npm 操作ができなくなりました。具体的には、npm install や uninstall コマンドでパッケージの追加・削除ができない。 エラー内容は EPERM: operation not permitted, unlink... で、自分の場合は node_module/.bin/craco が unlink…
超小ネタ。 VSCode でコーディングをしていたら、入力動作がおかしくなった。 入力中に Tab キーを押すと、エディタ画面からカーソルが消える。つまり入力状態が終わってしまう。 調べてみると、「Toggle Tab Key Moves Focus」というモードが ON になっていた…
tsyringe による依存注入 tsyringe を使うと TypeScript アプリケーションにて依存注入を実現することができます。 GitHub - microsoft/tsyringe: Lightweight dependency injection container for JavaScript/TypeScript アプリケーションコードは以下のよ…
スキーマバリデーションの yup の話です。 例えば、会員登録時の規約の同意など、必ず true になってほしい項目があります。 その際のスキーマ定義は以下の通り。 yup.object({ accept_terms: yup.boolean().default(false).isTrue('同意が必要です') }) isT…
スキーマバリデーションのライブラリである yup の話です。 以下のようなネストになったスキーマがあるとします。 yup.object({ foo: yup.object({ bar: yup.string.require() }) }) foo は require ではないので任意項目のはずです。しかし、内部の bar が …
webpack で特定の warning 表示を消す場合。 ignoreWarnings を使う。 module.exports = { //... ignoreWarnings: [ { module: /module2\.js\?[34]/, // A RegExp }, { module: /[13]/, message: /homepage/, }, /warning from compiler/, (warning) => true…
yup でカスタムバリデータを追加する方法です。 サンプルとして「日付っぽい文字列かどうか」のバリデータを追加しました。 Dateライブラリには dayjs を利用しています。 import * as yup from 'yup'; import dayjs from 'dayjs'; import customParseFormat…
スキーマバリデーションの yup の話です。 github.com ※この記事執筆時点での yup のバージョンは 1.1.1 となります。 文字列の最小文字数を指定するには、 min を使います。 const schema = yup.object().shape({ password: yup.string().default('').min(8…
React のコンポーネントライブラリである AntDesign の話。 AntDesign を利用したコンポーネントに対するスナップショットテストが落ちていた。スナップショットの変更箇所は以下のような感じ。 <div class="ant-select _select_1826e5 css-dev-only-do-not-override-w8mnev ant-select-single ant-select-show-arrow"> </div>
概要 React のコンポーネントライブラリである Ant Design ant.design その Ant Design の Calendar コンポーネントにて、日本語ロケールを指定する方法。 結論 結論から書くと、以下のように指定しました。 ※アプリケーション全体から参照できるよう、共通…
CSS Custom Propeties(いわゆるCSS変数)は便利です。 この変数定義に Sass の変数を利用する方法。ちょっとハマったのですが、 #{ } というシンタックスを挟む必要がありました。 /* variables.scss(変数定義ファイル) */ $some-color: #64ff00; /* glob…
Next.js で作成した API が別ドメインからアクセスされる時、CORS の問題が発生すると思います。 対応策について調べてみたところ、設定ファイルである next.config.js の header 項目が利用できる、との情報を見つけました。 nextjs-ja-translation-docs.ve…
複数行のときだけ line-height を効かせたい場合があります。 逆に言うと、1行なら特に指定したくない。 この場合、CSS の first-line 疑似要素が使えます。 span { font-size: 14px; // 文字サイズ line-heigth: 20px; // 複数行の場合、行間を開けたい } s…
React の Custom Hooks に対して、ユニットテストを書いていました。 testing framework には vitest を利用。 さらに、@testing-library/react を追加。renderHooks という関数が含まれており、Custom Hooks のテストを実行することができます。 testing-li…
HTML の video タグを使って、動画を自動再生(autoplay)するよう設定していました。しかし、自動再生されない…。 MDN を見てみる。 developer.mozilla.org すると、こんな記述が。 一部のブラウザー (Chrome 70.0 など) では、 muted 属性がないと autopla…
ちょっとしたアニメーションの実装などのために JavaScript から HTML の class を付け外しすることはあるかと思います。 そのときに利用するのが classList です。 const target = document.querySelector('.target') target.classList.add('foo') target.c…
サンプル このように、CSS だけで四つ角に枠線を付ける方法。 コード 以下のように書けばOK。 <div class="box">ここにテキスト</div> .box { position: relative; } .box:before { content: ""; background-image: linear-gradient(to right, #17172d, #17172d 40%, transparent 40…
概要 ネイティブアプリを開発する際に一部のページをウェブで表示する、という要件はあると思います。(いわゆるウェブビュー) その際に、ウェブビューを React.js と Next.js で作成する方法です。 ※ちなみに筆者はネイティブアプリ開発の経験はありません…
VSCode には 最近使用した項目を開く(File: Open Recent) というコマンドがあります。 選択した項目を、VSCode で開くことができます。 筆者は Github のレポジトリごとに VSCode のウィンドウを開くようにしています。(例: UI 開発のコードベースと API …
> console.log(new Array(120).fill('foo')) // 120個の要素 'foo' を持つ配列を表示 [ 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'fo…
プロジェクトの Node.js v18 にアップグレードした。 すると、storybook のビルドが通らなくなってしまった。 $ npm run storybook 「wdm」: wait until bundle finished: node:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen); ^ Erro…
問題 Next.js でビルドする時に、エラーが発生した。 $ npm run build > project-name@1.0.0 build > next build info - Loaded env from /Users/me/project-name/.env.local info - Linting and checking validity of types SyntaxError: Unexpected token …
React でのアプリケーション開発にて、Recharts はメジャーなグラフライブラリの1つです。 そんな Recharts では、 style という props からスタイル指定が可能です。以下は、Y軸へのスタイル指定の例。 <YAxis // ...ここにその他の props たち style={{ fontSize: '12px', fontWeight: 300, fontFamily: 'oswald' }} /> CSS Custom Properties を利用したバージョンが以下</yaxis>…
問題 tsparticles を使うと、サイト内に動的な演出ができて便利です。 github.com しかし直近リリースされた v2.4.0 に対応したところ、tsparticles の canvas が前面に出てきてしまいました…。 github.com 原因 原因は、canvas の inline style を消すのが…
tsParticles を利用すると、ウェブページ内に動的な演出を追加できます。 github.com 今回、 tsParticles の links というプリセットを設定しました。 github.com ところが、ドキュメントを見ても線の色を変える方法が分からない…。 ソースコードを見ていた…
概要 Next.js v13 がリリースされました。 nextjs.org 主な変更点の1つが @next/font の追加。@next/font には以下のような特徴があります。 Automatically optimizes your fonts, including custom fonts(カスタムフォントを含めたフォントの最適化) Remo…
React Portal を使うと、コンポーネント構造の制約を受けずに、アプリケーション内の任意の箇所に DOM を挿入することができます。 モーダルの実装などで役に立つかと思います。 ja.reactjs.org そんな React Portal ですが、Next.js の SSR/SSG を利用した…
解説 例えば、以下のような構造。 div の中に2つの要素があり、display: flex で横並びにしている。 ここで、右側の要素は height: 100px を指定している。 すると、左側の要素も height: 100px となってしまう。 左側の要素の height を保つ 方法。 解決策 …
Next.js の Next/Image を利用しているコンポーネントを storybook で表示しようとしたところ、 png 画像が表示されませんでした。(以下のような状態。 Devtools の Network タブで見ても、404 が返ってきていました。 なぜかsvg 画像は問題なく表示されて…
問題 Angular でのアプリケーション開発では、Service を利用してロジックを分離することがあるかと思います。 Template から Service のメソッドを呼び出すには、普通は Component を経由するかと思います。 @Injectable() export class FooService { doSom…