Giter Club home page Giter Club logo

astro-template's Introduction

ワイの Astro テンプレート

静的ファイルジェネレーターとして使いたい。

方針(主に css)

Astro のコンポーネントと FLOCSS の構造が上手くマッチするような気がしている。

  • カスケードの優先度が css の記述順(ファイルの読み込み順)に依存しないように、@layer で強さを明示している
  • レイアウトの部品やコンポーネントは自身に関係のある scss をインポートする
    • 全体にかかる DefaultLayout.astro では foundation.scss をインポートしている
    • <MainNav>scss/layout/main-nav.scss をインポートする、みたいな

なお @layer は無指定のほうが強いので、面倒だからと省略するとすぐに破綻する。

Astro の流儀に従わないこともある

  • DefaultLayout.astro で全ての (s)css をインポートしてしまう作戦もありそう
  • .astro 内に (s)css は書きません
  • スクリプトも is:inline 以外はファイルに書いてインポートする(これは普通)

ディレクトリ構成

たぶんコロコロ変わる。

public
└── img
src
├── components
├── content
│   └── posts
├── layouts
├── pages
│   └── posts
├── scripts
└── styles
    └── scss

public

そのまま使うファイルを置く。img 以下に favicon とか。

なお、Astro 君は src 以下のファイルしか監視していない模様で、public 内のファイルを更新してもホットリロードしてくれない。

src/components

汎用的に使いそうなパーツ。ボタン、カードなど。

src/content

コンテンツコレクション用。

src/layouts

各ページで共通に使われるパーツ。レイアウトに含まれるヘッダーやフッターなどもここ。src/componentsとの違いは使われる頻度。適当だなあ。

FLOCSS の構成に合わせてもいいかもしれない。その場合、src/components 内のボタンコンポーネントなどは src/layouts/object/component 以下に移動することになりそう。

src/pages

ページ用。

src/scripts

スクリプト。基本はここにファイルを置いてインポートする。

src/styles

スタイルシート。scss はディレクトリに入れた。

インストール

Node.js v18.14.1 以上

git clone [email protected]:YokochiO/astro-template.git
npm i

実行・ビルド

npm run dev
npm run build

VSCode の依存関係

.workspaceに拡張や sass の設定などがある。他のエディタのことは知らない。

(おまけ)WordPress テーマ対策

  • どうせなら WordPress のテーマも一緒に扱いたい
  • 静的ファイルを手動でコピーするのは嫌だ

ということで、ビルドが終わったら copy.js を実行して dist から静的ファイルをコピーする。

copy.js の設定

const fromDir = './dist' // コピー元のフォルダ
const toDir = './wordpress-theme' // コピー先(WordPressのテーマフォルダ)
const files = ['img', '_astro'] // fromDir内のこれらをコピーする

package.json

  "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build",
    "preview": "astro preview",
    "astro": "astro"
  },

buildを書き換え、copyを追加

  "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build && npm run copy",
    "preview": "astro preview",
    "astro": "astro",
    "copy": "node copy.js"
  },

WordPress のために静的ファイルを作るのはナンセンスだとか言われるけど、あのクソみたいなエディタを使いたくない。

astro-template's People

Contributors

yokochio avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.