Raspberry Pi3でHjsonを利用してみた

HjsonはJSON形式の設定ファイルを書く際に利用され「JSON内にコメント書ける」、「末尾のカンマを省略できる」、「キーのダブルクォーテーションを省略できる」などの特徴があります。ここではRaspberry Pi3におけるHjsonについて解説していきます。

01: 環境

  • Raspbian GNU/Linux 8.0 (jessie)

02: インストール

bash


# 作業ディレクトリを作成/移動
$ mkdir JS0201-Hjson
$ cd JS0201-Hjson

# package.jsonの作成
$ npm init

03: JSON形式の設定ファイルの作成

bash


# Hjsonのインストール
$ npm install hjson -save

# test.hjsonの作成
$ nano test.hjson

test.hjson


{
  /* 開発環境用の依存ライブラリ */
  devDependencies: {
    // ES2015トランスパイル
    babel-cli: "~6.14.0"
    browserify: "~13.1.0" # モジュール機能
  }
}

04: 実行

bash


$ node_modules/hjson/bin/hjson -j test.hjson > test.json

test.json


{
  "devDependencies": {
    "babel-cli": "~6.14.0",
    "browserify": "~13.1.0"
  }
}

05: gulp-hjsonを利用

gulpはNode.jsをベースとしたビルドシステムヘルパーです。gulpを使用することで、さまざまな作業を自動化できます。

bash


# gulp-hjsonのインストール
$ npm install gulp-hjson -save

# グローバル/ローカルの両方にgulpをインストール
# 理由は、gulpがタスクを処理するときに、プロジェクト内で依存関係があるローカルのgulpをrequireで呼び出すから。
$ sudo npm install gulp -g
$ npm install gulp -save

# gulpのバージョンを確認
# グローバルとローカルで同じバージョンが表示されればOK
$ gulp -v
[19:18:39] CLI version 3.9.1
[19:18:39] Local version 3.9.1

# gulpfile.jsの作成
$ nano gulpfile.js

# gulpの実行
$ gulp hjson

gulpfile.js


var gulp = require('gulp');
var Hjson = require('gulp-hjson')

gulp.task('hjson', function() {
  gulp.src(['*.hjson'])
    .pipe(Hjson({ to: 'json', jsonSpace: "  "  }))
    .pipe(gulp.dest('output'));
});

output/test.json


{
  "devDependencies": {
    "babel-cli": "~6.14.0",
    "browserify": "~13.1.0"
  }
}