Upgrade to Pro — share decks privately, control downloads, hide ads and more …

イマドキのコーダー環境構築2016

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for sou-lab sou-lab
September 24, 2016

 イマドキのコーダー環境構築2016

CSS Nite LP47 Coder's High 2016 http://cssnite.jp/lp/lp47
「イマドキのコーダー環境構築」で発表したスライドです。

Avatar for sou-lab

sou-lab

September 24, 2016

More Decks by sou-lab

Other Decks in Programming

Transcript

  1. Compassの終焉 • CSSスプライト あまり使わなくなってきた • ベンダープリフィックス Autoprefixer • 便利Mixin 依存が強い

    Compassやめたい... • 便利関数 依存が強い • 更新が2014年8月からない • Ruby環境依存
  2. Preprocessor Number of Votes Percentage Sass 1297 63.95% Less 308

    15.19% Stylus 76 3.75% No Preprocessor 305 15.04% Other 42 2.07% • • Update 12/10/2015 2028 responses The State of Front-End Tooling ‒ 2015 https://ashleynolan.co.uk/blog/frontend-tooling-survey-2015-results
  3. Sassの機能 • セレクタのネスト • 変数 • 四則演算 • 関数 •

    Mixin、 Extend • ループ、条件分岐 • パーシャル etc...
  4. 「&」を使ったセレクタ記法 SCSS .block { display: block; &_ _element { display:

    inline-block; &--modifier { background-color: #f00; } } } CSS .block { display: block; } .block__element { display: inline-block; } .block__element--modifier { background-color: #f00; }
  5. Sassに近い機能をPostCSSに セレクタのネスト nested • 変数 simple-vars calc • 四則演算 color-function等

    • 関数 • Mixin、 Extend sassy-mixins、extend for、conditionals • ループ、条件分岐 each、 • パーシャル partial-import • PostCSSプラグイン
  6. PostCSSプラグイン セレクタのネスト • 変数 • 四則演算 • 関数 • Mixin、

    Extend • ループ、条件分岐 • パーシャル • 一行コメント • 画像サイズ取得 • 独自プロパティ • • 自動ベンダープリフィックス • プロパティの並びかえ • クラス名にハッシュ付与 • メディアクエリをまとめる • flexboxバグ修正 • フォールバック • コードチェック • 画像インライン変換 • 出力コード整形 • minify (圧縮) CSSに関わる全ての処理を行うので、 プリ/ポストプロセッサーという概念はない
  7. • • • • • • • • • •

    • 各種言語コンパイル • CSSスプライト 構文チェック • SVG圧縮 監視(ウォッチ) • 画像最適化(圧縮) ローカルサーバー • スタイルガイド ファイル結合 • アップロード ファイル/フォルダ削除 • 通知 バリデート • SVGスプライト コード変換/置換 • フォント作成 ライブリロード • 画像リサイズ ファイル名変更 • ファイル圧縮 ファイル分割 • スクリーンショット
  8. gulpfileの書き方 gulpfile.js var gulp = require('gulp'); var sass = require('gulp-sass');

    var sourcemaps = require('gulp-sourcemaps'); パッケージの読み込み gulp.task('sass', function () { return gulp.src('./sass/**/*.scss') .pipe(sourcemaps.init()) .pipe(sass().on('error', sass.logError)) .pipe(sourcemaps.write()) .pipe(gulp.dest('./css')); }); 処理を書く .pipeでつなぐ タスク名
  9. gulpfileの書き方 gulpfile.js var gulp = require('gulp'); var sass = require('gulp-sass');

    var sourcemaps = require('gulp-sourcemaps'); gulp.task('sass', function () { return gulp.src('./sass/**/*.scss') .pipe(sourcemaps.init()) .pipe(sass().on('error', sass.logError)) .pipe(sourcemaps.write()) .pipe(gulp.dest('./css')); });
  10. gulpfileの書き方 gulpfile.coffee gulp = require('gulp') sass = require('gulp-sass') sourcemaps =

    require('gulp-sourcemaps') gulp.task 'sass', -> gulp.src('./sass/**/*.scss') .pipe(sourcemaps.init()) .pipe(sass().on('error', sass.logError)) .pipe(sourcemaps.write()) .pipe(gulp.dest('./css'))
  11. gulpfileの書き方 gulpfile.babel.js import gulp from 'gulp'; import sass from 'gulp-sass';

    import sourcemaps from 'gulp-sourcemaps'; gulp.task('sass', () => { return gulp.src('./sass/**/*.scss') .pipe(sourcemaps.init()) .pipe(sass().on('error', sass.logError)) .pipe(sourcemaps.write()) .pipe(gulp.dest('./css')); });
  12. 大切なことはすべてREADME.md が教えてくれた $ npm install --global gulp-cli gulp - Getting

    Started https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md
  13. nodeのバージョン大混在 node v4.5.0 node v6.6.0 node v7.0.0 Project A Project

    B Project C 古くて動かないかも? 新しくて動かないかも? node v6.6.0
  14. nodeのバージョンを切り替えられる node v4.5.0 v4.5.0 Project A .node-version node v4.5.0 node

    v6.6.0 v6.6.0 Project B .node-version node v7.0.0 v7.0.0 Project C .node-version
  15. nodeのバージョンを切り替えられる node v4.5.0 v4.5.0 Project A .node-version node v6.6.0 v6.6.0

    Project B .node-version node v6.6.0 node v7.0.0 v7.0.0 Project C .node-version
  16. nodeのバージョンを切り替えられる node v4.5.0 v4.5.0 Project A .node-version node v6.6.0 v6.6.0

    Project B .node-version node v7.0.0 v7.0.0 Project C .node-version node v7.0.0
  17. ローカルインストール node v4.5.0 node v6.6.0 node v7.0.0 Project A Project

    B Project C node_modules node_modules node_modules 「node_modules」フォルダに、 それぞれにnpmパッケージをインストールする
  18. package.jsonに書き込まれる package.json { } "devDependencies": { "gulp": "^3.9.1", "gulp-postcss": "^6.2.0",

    "gulp-sass": "^2.3.2", "gulp-sourcemaps": "^1.6.0" } --save-devオプションでインストールした パッケージが自動で書き込まれる
  19. ローカルパッケージ node v4.5.0 node v6.6.0 node v7.0.0 Project A Project

    B Project C node_modules package.json node_modules package.json node_modules package.json プロジェクトごとにpackage.jsonを作成 パッケージやスクリプトなどを管理する
  20. 環境を作る流れ 1. .node-version でバージョン指定 2. $ npm init -y でプロジェクト作成

    3. $ npm install --save-dev ◯◯ でパッケージインストール 4. gulpfile.js でタスクを書く 5. README.md で説明を書く 6. .gitignoreで「node_nodules」を無視
  21. 環境を受け取ったイマドキのコーダー 1. リポジトリからクローン 2. $ npm install 3. $ gulp

    or $ npm start 4. ッターーン! 5. プルリク 6. LGTM!! 繰り返す