このブログはGatsbyで作られています。
Gatsbyの最新版は1.9.269ですが、Githubでv2の開発が進められています。もう既にalpha版としてリリースされているので、実際に使ってみつつ、変更点をまとめてみました。
v2ブランチにあるBreaking Changes.mdを確認すると現段階(2018/06/02)での破壊的変更を確認できます。
Breaking Changes.mdと実際に触ってみて気になった変更点を記録しておきます。
Remove postcss plugins (cssnext, cssimport) from default css loader config
postcssが依存ライブラリから削除されています。
boundActionCreators => actions
gatsby-node.jsでexportする関数の引数のリネームです。
pathContext => pageContext
propsで渡されてくる引数名の変更です。
Source & transformer plugins now use UUIDs for ids. If you used glob or regex to query nodes by id then you'll need to query something else.
DataSource系のプラグインのUUIDの方式が変更になりました。
Changed modifyBabelrc to onCreateBabelConfig
gatsby-nodeでexportする関数のリネーム
Changed modifyWebpackConfig to onCreateWebpackConfig
gatsby-nodeでexportする関数のリネーム
Inlining CSS changed — remove it from any custom html.js as done automatically by core now.
html.jsで<style id="gatsby-inlined-css" dangerouslySetInnerHTML={{ __html: require('!raw-loader!../public/styles.css') }} />
みたいな記述を書いてCSSをHTMLに埋め込んでいたのですが、これがcoreの方に移動しました。
Manually install react and react-dom, along with any dependencies required by your plugins.
reactとreact-domが依存ライブラリから外れて、自分のリポジトリでdependenciesに入れるようになりました。
現時点の最新版でreact@16.4が使うことができました。new Context APIを使うこともできます。
gatsby 1系ではreactの15系が動いていたので最新版を使えるのは嬉しいです。
Layouts have been removed. To achieve the same behavior as v1, you have to wrap your pages and page templates with your own Layout component. Since Layout is a non-page component, making query has to be done with StaticQuery.
これは大きな変更でHeaderやFooterをlayouts/index.jsで書いていたと思うのですが、書くページでレイアウトのコンポーネントを呼び出すようになりました。
実際にはlayout.jsみたいなコンポーネントを書いてpages/以下のコンポーネントで呼び出すことになると思います。
import React from 'react'
const Layout = (props) => {
return <div>
{props.children}
</div>
}
import React from 'react'
import Layout from '../src/layout.js'
const Page = () => {
return <Layout>
<SomeComponent>
</Layout>
}
gatsby build
で5つのステージがあったのですが、build-cssが削除されて4つのステージになりました。
webpackがv4になる際にbuild-javascriptに統合されたようです。
gatsby-linkのパッケージからインポートしていたLinkがcoreの方に入りました。
import Link from 'gatsby-link'
import { Link } from 'gatsby'
今までは引数のconfigを使って書き換えていましたがsetWebpackConfig
というメソッドで変更するようになっています。 gatsby/src/utils/api-node-docs.js#L156-L162
内部で使われているwebpackがv1 => v4になっているのでv4にそった書き方をする必要があります。
exports.onCreateWebpackConfig = ({
stage, getConfig, rules, loaders, actions
}) => {
actions.setWebpackConfig({
module: {
rules: [
{
test: 'my-css',
use: [loaders.style(), loaders.css()]
},
],
},
});
}
package.jsonでnextとバージョン指定することで実際に使用することができます。
"dependencies": {
"gatsby": "next"
// gatsby系のプラグインに'next'をつけておく
}
あとはreactとreact-domが必要なのでyarn add react react-dom
を実行しておきます。
一旦このあたりでgatsby dev
を実行するとgatsby-plugin系のライブラリでpeer dependency化したプラグインがいくつか現れ Module not found: Error: Can't resolve 'PACKAGE_NAME'
みたいなエラーが出ます。
yarn add PACKAGE_NAME
を実行してインストールします。
次のメソッドを使っているならリネームをします。
Changed modifyBabelrc to onCreateBabelConfig
Changed modifyWebpackConfig to onCreateWebpackConfig
webpackの設定を書き換える記法をactions.setWebpackConfig
形式に変更します。
Breaking Changeで書いた内容のように変更していきます。
基本的にgatsby devが通らなければなにか治ってないので、エラー文を見て直していけば動くようになります。
全体的にgatsbyや関連pluginに依存してたライブラリがpeerDependencyになり、ユーザーの使いたいバージョンが使えるようになっているのが好印象です。
内部のbabalもv7が使われており、babelでTSを使うこともできるのでよりきれいに使いたい方は選択肢が増えていくのではないでしょうか?
誰得の記事なのかわかりませんが、日本のGatsbyJSユーザーの皆さんのお役に立てたら嬉しいです。
ここ最近、Web技術を利用した画像生成に興味があります。本記事では、日本語における表現の一種である縦書きに焦点を当て、Web技術を使った縦書きを含む画像生成方法についての調査をまとめました。 > 現
追記(2022/12/29): 問い合わせに対応する窓口をTwitterに統一したいので、フォームページは削除しました。 当ブログは静的サイトホスティングサービスのNetlifyでホスティングされ
毎年10月に開催されるHacktoberfestに参加しました。このイベントはOSSへの貢献を行い、期間中に規定数(4つ)の貢献を行った人に特典がプレゼントされるものになっています。 自分はドキュメ