VCCWではじめるWordpress シリーズVCCWでiemotoを使ったWordpressテーマ作成
はじめに
前回Gruntを使ったテーマ開発環境を作るという記事でVCCWを開発しているのmiya0001さんにiemotoを紹介いただいたので、実際にインストールして使えるところまで試してみました。
VCCWについて
VCCWの環境構築についてはこちらの記事Vagrant + Chef ベースのWordpress Theme / Plugin 開発環境「VCCW」を参考にしてください。
Iemotoについて
Iemotoは_s(underscores)というスターターテーマをベースとしたGrunt/Gulpテンプレートです。
仮想環境にSSH接続する
すでにVagrant環境及びVCCWをインストールし$ vagrant up
が実行可能という前提で進めます。まずは仮想環境にSSH接続しましょう。
$ vagrant up
$ vagrant ssh
[vagrant@wordpress ~]$
ここからはすべて仮想環境でコマンドを実行します。
テーマ作る
テーマディレクトリに移動し適当にディレクトリを作ります。
$ cd /var/www/wordpress/wp-content/themes/
$ mkdir test
iemotoのインストール
VCCWにはrbenv, bundler, node.js, grunt-cliがインストール済みです。grunt-init
コマンドで_sベースのスターターテーマを生成します。
$ grunt-init iemoto
[?] Project title (Iemoto) test
[?] PHP function prefix (alpha and underscore characters only) (iemoto)
[?] Description (This is a awesome cool theme.)
[?] Project homepage (https://example.com/) http://test.io/
[?] Author name nukos.kitchen
[?] Author url (https://example.com/) http://whiskers.nukos.kitchen/
[?] Use gulp? (y/N) N
[?] Do you need to make any changes to the above before continuing? (y/N) N
設定入力後、確認をスキップするとテーマファイルが生成されます。Gruntを使いたい方は[?] Use gulp? (y/N)
をN
にします(そろそろGulpも使おうと思う)。
{ '.gitignore': 'iemoto/root/.gitignore',
'.jshintrc': 'iemoto/root/.jshintrc',
'404.php': 'iemoto/root/404.php',
'Gruntfile.js': 'iemoto/root/Gruntfile.js',
'README.md': 'iemoto/root/README.md',
'archive.php': 'iemoto/root/archive.php',
'comments.php': 'iemoto/root/comments.php',
'content-none.php': 'iemoto/root/content-none.php',
'content-page.php': 'iemoto/root/content-page.php',
'content-search.php': 'iemoto/root/content-search.php',
'content-single.php': 'iemoto/root/content-single.php',
'content.php': 'iemoto/root/content.php',
'footer.php': 'iemoto/root/footer.php',
'functions.php': 'iemoto/root/functions.php',
'gulpfile.js': 'iemoto/root/gulpfile.js',
'header.php': 'iemoto/root/header.php',
'inc/custom-header.php': 'iemoto/root/inc/custom-header.php',
'inc/customizer.php': 'iemoto/root/inc/customizer.php',
'inc/extras.php': 'iemoto/root/inc/extras.php',
'inc/jetpack.php': 'iemoto/root/inc/jetpack.php',
'inc/template-tags.php': 'iemoto/root/inc/template-tags.php',
'index.php': 'iemoto/root/index.php',
'js/customizer.js': 'iemoto/root/js/customizer.js',
'js/iemoto.js': 'iemoto/root/js/iemoto.js',
'js/navigation.js': 'iemoto/root/js/navigation.js',
'js/skip-link-focus-fix.js': 'iemoto/root/js/skip-link-focus-fix.js',
'languages/_s.pot': 'iemoto/root/languages/_s.pot',
'languages/ja.mo': 'iemoto/root/languages/ja.mo',
'languages/ja.po': 'iemoto/root/languages/ja.po',
'languages/readme.txt': 'iemoto/root/languages/readme.txt',
'page.php': 'iemoto/root/page.php',
'rtl.css': 'iemoto/root/rtl.css',
'sass/_reset.scss': 'iemoto/root/sass/_reset.scss',
'sass/editor-style.scss': 'iemoto/root/sass/editor-style.scss',
'sass/elements/_elements.scss': 'iemoto/root/sass/elements/_elements.scss',
'sass/elements/_lists.scss': 'iemoto/root/sass/elements/_lists.scss',
'sass/elements/_tables.scss': 'iemoto/root/sass/elements/_tables.scss',
'sass/forms/_buttons.scss': 'iemoto/root/sass/forms/_buttons.scss',
'sass/forms/_fields.scss': 'iemoto/root/sass/forms/_fields.scss',
'sass/forms/_forms.scss': 'iemoto/root/sass/forms/_forms.scss',
'sass/layout/_content-sidebar.scss': 'iemoto/root/sass/layout/_content-sidebar.scss',
'sass/layout/_sidebar-content.scss': 'iemoto/root/sass/layout/_sidebar-content.scss',
'sass/media/_captions.scss': 'iemoto/root/sass/media/_captions.scss',
'sass/media/_galleries.scss': 'iemoto/root/sass/media/_galleries.scss',
'sass/media/_media.scss': 'iemoto/root/sass/media/_media.scss',
'sass/mixins/_mixins-master.scss': 'iemoto/root/sass/mixins/_mixins-master.scss',
'sass/modules/_accessibility.scss': 'iemoto/root/sass/modules/_accessibility.scss',
'sass/modules/_alignments.scss': 'iemoto/root/sass/modules/_alignments.scss',
'sass/modules/_clearings.scss': 'iemoto/root/sass/modules/_clearings.scss',
'sass/modules/_infinite-scroll.scss': 'iemoto/root/sass/modules/_infinite-scroll.scss',
'sass/navigation/_links.scss': 'iemoto/root/sass/navigation/_links.scss',
'sass/navigation/_menus.scss': 'iemoto/root/sass/navigation/_menus.scss',
'sass/navigation/_navigation.scss': 'iemoto/root/sass/navigation/_navigation.scss',
'sass/site/_site.scss': 'iemoto/root/sass/site/_site.scss',
'sass/site/primary/_asides.scss': 'iemoto/root/sass/site/primary/_asides.scss',
'sass/site/primary/_comments.scss': 'iemoto/root/sass/site/primary/_comments.scss',
'sass/site/primary/_posts-and-pages.scss': 'iemoto/root/sass/site/primary/_posts-and-pages.scss',
'sass/site/secondary/_widgets.scss': 'iemoto/root/sass/site/secondary/_widgets.scss',
'sass/style.scss': 'iemoto/root/sass/style.scss',
'sass/typography/_copy.scss': 'iemoto/root/sass/typography/_copy.scss',
'sass/typography/_headings.scss': 'iemoto/root/sass/typography/_headings.scss',
'sass/typography/_typography.scss': 'iemoto/root/sass/typography/_typography.scss',
'sass/variables-site/_colors.scss': 'iemoto/root/sass/variables-site/_colors.scss',
'sass/variables-site/_structure.scss': 'iemoto/root/sass/variables-site/_structure.scss',
'sass/variables-site/_typography.scss': 'iemoto/root/sass/variables-site/_typography.scss',
'sass/variables-site/_variables-site.scss': 'iemoto/root/sass/variables-site/_variables-site.scss',
'screenshot.png': 'iemoto/root/screenshot.png',
'search.php': 'iemoto/root/search.php',
'sidebar.php': 'iemoto/root/sidebar.php',
'single.php': 'iemoto/root/single.php',
'style.css': 'iemoto/root/style.css' }
Writing .gitignore...OK
Writing .jshintrc...OK
Writing 404.php...OK
Writing Gruntfile.js...OK
Writing README.md...OK
Writing archive.php...OK
Writing comments.php...OK
Writing content-none.php...OK
Writing content-page.php...OK
Writing content-search.php...OK
Writing content-single.php...OK
Writing content.php...OK
Writing footer.php...OK
Writing functions.php...OK
Writing gulpfile.js...OK
Writing header.php...OK
Writing inc/custom-header.php...OK
Writing inc/customizer.php...OK
Writing inc/extras.php...OK
Writing inc/jetpack.php...OK
Writing inc/template-tags.php...OK
Writing index.php...OK
Writing js/customizer.js...OK
Writing js/iemoto.js...OK
Writing js/navigation.js...OK
Writing js/skip-link-focus-fix.js...OK
Writing languages/_s.pot...OK
Writing languages/ja.mo...OK
Writing languages/ja.po...OK
Writing languages/readme.txt...OK
Writing page.php...OK
Writing rtl.css...OK
Writing sass/_reset.scss...OK
Writing sass/editor-style.scss...OK
Writing sass/elements/_elements.scss...OK
Writing sass/elements/_lists.scss...OK
Writing sass/elements/_tables.scss...OK
Writing sass/forms/_buttons.scss...OK
Writing sass/forms/_fields.scss...OK
Writing sass/forms/_forms.scss...OK
Writing sass/layout/_content-sidebar.scss...OK
Writing sass/layout/_sidebar-content.scss...OK
Writing sass/media/_captions.scss...OK
Writing sass/media/_galleries.scss...OK
Writing sass/media/_media.scss...OK
Writing sass/mixins/_mixins-master.scss...OK
Writing sass/modules/_accessibility.scss...OK
Writing sass/modules/_alignments.scss...OK
これでテーマファイルはできました。
あとはGruntが動くようにgemやnpmのモジュールをインストールします。
Gemのインストール
すでにbundlerがインストールされているのでbundle init
でGemfileを作ります。
$ bundle init
Writing new Gemfile to /var/www/wordpress/wp-content/themes/test/Gemfile
Gemfileを編集
今回はIemotoが生成するGruntfile.jsに書かれているSassやCompassを動かすために必要なgemをインストールします。$ vi Gemfile
でGemfileを編集します。
source "https://rubygems.org"
gem "sass"
gem "compass"
Gemfileが書けたらbundle install
でインストールします。
$ bundle install --path=vendor/bundle
node.jsモジュールのインストール
続いてnode.jsモジュールをインストールします。すでにpackage.jsonが用意されているのでインストールコマンドを実行するだけです。
$ npm install
package.jsonの中身
{
"name": "test",
"title": "test",
"description": "This is a awesome cool theme.",
"version": "0.1.0",
"homepage": "http://test.io/",
"author": {
"name": "Ryuichi Nonaka",
"url": "http://whiskers.nukos.kitchen/"
},
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-compass": "^0.9.1",
"grunt-contrib-jshint": "^0.10.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-text-replace": "^0.3.12",
"load-grunt-tasks": "^0.6.0"
},
"keywords": []
}
Gruntfileの修正
compassをbundler経由で実行するためにbundleExec
の指定をGruntfileに追加します。
// compass(sass)
compass: {
options: {
bundleExec: true
},
dev: {
options: {
sassDir: 'sass',
cssDir: 'css',
imagesDir: 'images',
outputStyle: 'expanded',
relativeAssets: true,
noLineComments: true,
sourcemap: true
}
},
dist: {
options: {
sassDir: 'sass',
cssDir: './',
imagesDir: 'images',
outputStyle: 'expanded',
relativeAssets: true,
noLineComments: true,
sourcemap: false,
force: true
}
}
}
Gruntの実行
Gruntを実行して下記のようにタスクが処理されれば成功です。
[vagrant@wordpress test]$ grunt
Running "jshint:dist" (jshint) task
>> 1 file lint free.
Running "compass:dev" (compass) task
directory css
write css/editor-style.css (5.887s)
write css/editor-style.css.map
write css/style.css (4.584s)
write css/style.css.map
Running "compass:dist" (compass) task
write editor-style.css (4.436s)
write style.css (4.268s)
Running "replace:dist" (replace) task
Done, without errors.
これでテーマ作成の準備は完了です。 あとはgrunt-contrib-watchとか入れて自分好みにカスタマイズします。
まとめ
今回は仮想環境上でGruntを動かしましたが、Sass/Compassだけでも処理に4秒write css/style.css (4.766s)
かかっていたりします。自分の環境が悪いのか設定が悪いのか・・・あまり良い数字ではないですね。原因までは調べてないのでどこが悪いとか言えませんがローカルで走らせるのも1つの方法かもしれません。
シリーズ
- VCCWでiemotoを使ったWordpressテーマ作成
- VCCWでWP-CLI(A command line interface for WordPress)を試す
- WP-CLIでWordpressプラグインをインストールし有効化する
- VCCWでファイルがアップロードできなくてはまった話