質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

compass

CompassはSassを拡張したオープンソースのCSSフレームワークです。 特徴は、ベンダープレフィックス等の複雑なCSSを手軽に記述できる点、 CSSスプライト画像を簡単に作成できる点などが挙げられます。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Grunt

Gruntは、JavaScriptで記述されたタスクを実行するアプリケーションです。タスクランナーと呼ばれる自動化ツールで、様々な作業を自動化して開発の効率を高めます。コマンド実行やファイル保存などの際の自動実行が可能です。

Q&A

解決済

1回答

4284閲覧

gulpでscssのようにjsを選択結合したい

move

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

compass

CompassはSassを拡張したオープンソースのCSSフレームワークです。 特徴は、ベンダープレフィックス等の複雑なCSSを手軽に記述できる点、 CSSスプライト画像を簡単に作成できる点などが挙げられます。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Grunt

Gruntは、JavaScriptで記述されたタスクを実行するアプリケーションです。タスクランナーと呼ばれる自動化ツールで、様々な作業を自動化して開発の効率を高めます。コマンド実行やファイル保存などの際の自動実行が可能です。

0グッド

0クリップ

投稿2016/11/29 01:16

やりたい事

gulpを使ってjsを結合する際、結合ファイルや結合順序を細やかに設定したい。

###現状
現在gulpを使いcss/jsを結合・コンパイルしています。

例えばディレクトリ構造が

dir/assets/css ・・・出力css
dir/assets/js ・・・出力js
dir/src/js ・・・・・被結合js
dir/src/scss・・・・・scss

のような構造でgulpfile.jsに

gulp.task('concat', function() { console.log('------concat----------'); return gulp.src('dir/src/js/*.js') .pipe(concat('app.js')) .pipe(gulp.dest('dir/assets/js')); });

にしてdir/src/js内のjsを結合しています。
ここに依存関係、例えば、jsに依存関係がある場合は
gulp.src(['dir/src/js/vendor/*.js','dir/src/js/vendor/**/*.js','dir/src/js/*.js'])
などと結合順序を階層で差をつけて結合しています。

scssの場合、例えば2つのcss(style.cssとstyle2.css)を作りたい場合

_common.scss _foo.scss _bar.scss _hoge.scss

上記のようなファイルがあったとして
#style.scss

@import "common"; @import "foo"; @import "bar";

#style2.scss

@import "common"; @import "hoge";

のようにする事で
style.css、style2.scssには必要な内容だけのcss希望する順番でコンパイルできる。

上記のgulpを使ったjsの結合処理でも結合順序や結合するjsファイルを細やかにしていする方法はないんでしょうか?

app.jsは下記の順で
jquery
jquery-ui

app2.jsは下記の順で
jquery
FlexSlider

※)実際にはそれぞれもっと多くのjsを結合する事が多いと思う。

といったjsを2つ作りたい場合gulpfile.jsに読み込みjsを1つづつ列挙していくにもスマートでない気がするので、

どのファイルをどういう順番で結合し、何という名前のjsファイルを出力する

といった設定をするような方法は無いものでしょうか?

作るサイトがどのページも似たような処理でjsも1種類で良い場合問題ではないのですが、このページではapp.jsを使いたい、このページではapp2.jsが使いたいなどという場合不便さを感じています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Node.jsに乗り換えましょう。
browserifywebpackを扱えるようになるので、
それで目的通りの事が出来ます。

JavaScript→Browserifyの歴史をざっくり紹介

  • GoogleがGoogleMap作ってJavaScriptすげーAjaxすげーってなる
  • 皆が触るがAjaxの実現が面倒過ぎる
  • jQueryが登場してAjaxを使ったリッチなサイトが簡単に作れるように
  • 各社ブラウザーがJavaScriptのエンジンを弄る。「うちのブラウザーのJavaScriptエンジンは他社製品より50%高速だよ!」
  • GoogleがV8エンジンをオープンソースとして公開
  • JavaScriptはすげー良くなった。サーバーサイドでも使いたい(でもファイルシステムも通信もないじゃんどうすんの)
  • CommonJS「requireという仕組み思いついたよ」
  • Node.js「おっ、その構想もらい。V8エンジンに自前実装のC++でファイルシステムや通信機能付け足して出すわ」
  • エンジニア「Node.jsの機能が便利過ぎてJavaScript辛い、なんとかならんか?」

こうして出来たbrowserifywebpackは、Node.jsのスクリプトをJavaScriptにコンパイル(?)することが出来ます。
独自実装のrequire関数を宣言し、依存先のファイルを同じJSファイルに詰め込むという作戦でJavaScriptでの依存ライブラリを解決します。

投稿2016/11/29 04:05

編集2016/11/29 06:30
miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

move

2016/11/29 08:39

ありがとうございます、歴史的な背景もあり、いろいろな記事を読んだり、自機にインストールしているnode.jsのバージョンも古かったので、nodebrewで入れ直したりしながら、環境構築に時間がかかりましたが、なんとかできました。便利そうですが、次はnpmのパッケージ使うのかbowerのパッケージ使うのかの部分で悩みそうです(ー_ー;)、requireできる事は大変便利ですね!! 今までbowerで全ての必要パッケージ管理していたのでそのあたりもうちょっと調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問