npmっていったいなんなの
フロントエンド系の集まりに行くと、
npmとかタスクランナーとかpugとか……そういった素敵なものをみんな使っているらしい。
npmって……npmってなんなの!
Node.jsをつかってみよう
Node Packaged Modules(npm)とはNode.jsのライブラリやパッケージを管理することができるツールです。
とりあえずまず全てはNode.jsから始まるらしい。
Node.jsを入れる
公式からダウンロードしよう
作業用フォルダを作っておく
node.jsを、とりあえず、動かすことが先決
こんなかんじで上等。
黒い画面を呼ぶ
フォルダを移動する
これが結構難しい。移動できない。
cd /d 作業用フォルダのパス
これで移動できると思う。
移動というのは、黒い画面の行の最初の方、「>」のまえの部分のパスを、別のパス(今回は作業用フォルダのパス)に変えること。
package.jsonを生み出してみる
黒い画面で
npm init
と入れてみよう。
なにか入力を求められるのだけれども、とりあえずEnter、Enterと次の行に送っていく。
Is this OK ? (yes)
まで行ったらおわり。作業用フォルダにpackage.jsonが入っているはず。
ここまでで、このページの黒い画面の3つめが終わったところ。
gulpを入れてみる。
npm install gulp -g
npm install --save-dev gulp
さっきの続きのままこの2つを、黒い画面で実行すればOK
パッケージのインストール
npm install --save-dev browser-sync gulp-sass gulp-pug
pugとsassとブラウザシンクを走らせたいので、
これでインストール。
作業用フォルダにgulpfile.jsを作る。
//各パッケージの読み込み
var gulp = require("gulp");
var browsersync = require("browser-sync");
var sass = require("gulp-sass");
var pug = require("gulp-pug");
//sassをコンパイルするタスク
gulp.task("sass", function() {
gulp.src("scss/**/*scss")//ソースを指定
.pipe(sass())//コンパイルして
.pipe(gulp.dest("public/css"))//dest/cssに出力して
.pipe(browsersync.reload({stream:true}))//ライブリロードする
});
//pugをコンパイルするタスク
gulp.task("pug", function() {
gulp.src("pug/**/*pug")
.pipe(pug())
.pipe(gulp.dest("public/"))
.pipe(browsersync.reload({stream:true}))
});
//browser-syncによるローカルサーバー立ち上げ
gulp.task("server", function() {
browsersync({
server: {
baseDir: "./public"//ドキュメントルートを指定
}
});
});
//デフォルトタスク
gulp.task("default",['server'], function() {
gulp.watch("pug/**/*pug",["pug"]);//pugを監視
gulp.watch("scss/**/*scss",["sass"]);//scssを監視
});
この場合は、
publicフォルダ(公開されるファイル)
┣cssフォルダ
┗index.html
pugフォルダ
scssフォルダ
package.json
gulpfile.js
こんなフォルダ構造想定。
pugとscssを入れておこう。
※htmlを1行詰め詰めにしたくないときは、
.pipe(pug()) を .pipe(pug({pretty: true})) に。
黒い画面でgulpを走らせる
gulp
黒い画面で、作業用フォルダを選んでいることを確認したら、実行。
publicフォルダが自動で生まれて、
コンパイルされたhtmlとcssが誕生していれば成功。
タスクが走った最初だと、うまく表示されなければ、一度ファイルを編集してみるといいかも。
初めて用pugテンプレ
doctype html
html(lang="ja")
head
meta(charset="utf-8")
meta(http-equiv="X-UA-Compatible", content="IE=edge")
meta(name="viewport", content="width=device-width, initial-scale=1.0")
meta(name="format-detection", content="telephone=no")
title ★テキスト★
meta(content="★★テキスト★★", name="description")
meta(content="★★テキスト★★", name="keywords")
link(rel="stylesheet", href="css/style.css")
script(src="https://code.jquery.com/jquery-1.11.2.min.js")
body
h1 Pug - node template engine
#container.col
if youAreUsingPug
p You are amazing
else
p Get on it!
p.
Pug is a terse and simple templating language with a
strong focus on performance and powerful features.
次はこれ読む→Pugと仲良くする方法
追記:コンパイルエラー時にgulpを終了しない&autoprefixerつける
npm install --save-dev gulp-plumber gulp-pleeease browser-sync gulp-sass gulp-pug
//各パッケージの読み込み
var gulp = require("gulp");
var browsersync = require("browser-sync");
var sass = require("gulp-sass");
var pug = require("gulp-pug");
var pleeease = require('gulp-pleeease');
var plumber = require('gulp-plumber');
//sassをコンパイルするタスク
gulp.task("sass", function() {
gulp.src("scss/**/*scss")//ソースを指定
.pipe(plumber())
.pipe(sass())//コンパイルして
.pipe(pleeease({
autoprefixer: {
browsers: [
"ie 11",
"ios >= 9",
"android >= 4.4",
"> 1% in jp",
"not ie <= 10"
]
},
minifier: false // minify無効
}))
.pipe(gulp.dest("public/css"))//dest/cssに出力して
.pipe(browsersync.reload({stream:true}))//ライブリロードする
});
//pugをコンパイルするタスク
gulp.task("pug", function() {
gulp.src("pug/**/*pug")
.pipe(plumber())
.pipe(pug({
pretty: true
}))
.pipe(gulp.dest("public/"))
.pipe(browsersync.reload({stream:true}))
});
//browser-syncによるローカルサーバー立ち上げ
gulp.task("server", function() {
browsersync({
server: {
baseDir: "./public"//ドキュメントルートを指定
}
});
});
//デフォルトタスク
gulp.task("default",['server'], function() {
gulp.watch("pug/**/*pug",["pug"]);//pugを監視
gulp.watch("scss/**/*scss",["sass"]);//scssを監視
});
参考:http://yutapon.hatenablog.com/entry/2014/09/11/100000


コメント