angular-ganttを導入する方法
前提として、git, npm(node.js), bower, gruntのインストールが必要。
angular-ganttのダウンロード
angular-ganttは現状も開発中のコンテンツなので、gitでクローンするのがベストです。
$ git clone https://github.com/angular-gantt/angular-gantt Cloning into 'angular-gantt'... remote: Counting objects: 13984, done. remote: Compressing objects: 100% (142/142), done. remote: Total 13984 (delta 73), reused 0 (delta 0), pack-reused 13839 Receiving objects: 100% (13984/13984), 19.67 MiB | 70.00 KiB/s, done. Resolving deltas: 100% (9699/9699), done. Checking connectivity... done.
ダウンロードしてきたファイルのルートにはpackage.json, bower.json, Gruntfile.jsが含まれています。ダウンロードしてきたディレクトリの中に入ります。
$ cd angular-gantt/
次に、node.jsの依存関係をダウンロードしてきます。node.jsの依存関係は「package.json」に記述されています。↓のコマンドでそれらを自動的にダウンロードしてきます。
$ npm install npm WARN deprecated phantomjs@2.1.3: Package renamed to phantomjs-prebuilt. Please update 'phantomjs' package references to 'phantomjs-prebuilt' npm WARN deprecated lodash@0.9.2: Grunt needs your help! See https://github.com/gruntjs/grunt/issues/1403. npm WARN deprecated graceful-fs@1.2.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible. npm WARN deprecated lodash@1.0.2: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0. npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible. npm WARN prefer global marked@0.3.5 should be installed with -g npm WARN prefer global jshint@2.9.1 should be installed with -g ........... ........... ...........
ディレクトリに「node_modules」が追加されたことが確認できるでしょう。
「npm WARN deprecated」というワーニングが出る場合がありますが、これは
「廃止されています。依存関係に注意しましょう。」っという意味です。
「npm WARN prefer global」というワーニングは「npm install -g」ってしてくれたほうがいいよっということです。
ただ、まぁ捨ておいておいても大きな問題にはならないでしょう。
先に進みます。
前出のnpmはNode.jsのパッケージマネージャです。次に使うbowerもパッケージマネージャですが、これはフロントエンド用(HTML/CSS/JS)のパッケージマネージャになります。
動きはnpmとだいぶ似ています。
では、bowerの依存関係をダウンロードしてきます。bowerの依存関係は「bower.json」に記述されています。↓のコマンドでそれらを自動的にダウンロードしてきます。
$ bower install bower angular#~1.5 cached git://github.com/angular/bower-angular.git#1.5.0 bower angular#~1.5 validate 1.5.0 against git://github.com/angular/bower-angular.git#~1.5 bower jquery#~2 cached git://github.com/jquery/jquery-dist.git#2.2.1 bower jquery#~2 validate 2.2.1 against git://github.com/jquery/jquery-dist.git#~2 ........... ........... ...........
ディレクトリに「bower_components」が追加されたことが確認できるでしょう。
次にgruntコマンドを使います。
gruntとはnode.jsによるフロントエンド用(HTML/CSS/JS)タスク自動化ツールのことです。
最初に実行したnpmのコマンドの時にこれがインストールされています。
Gruntfile.jsというファイルの中に、その自動化の手順が記述されています。
この自動化のメリットはめんどくさい圧縮・最適化の処理を一括で実行したり、他の人と共有するためです。
angular-ganttの開発者が簡単に共有できるようにGruntfile.jsをすでに用意してくれているのでそれを
活用します。
$ grunt ........... (最初の辺は順調) ........... Running "karma:unit" (karma) task 27 02 2016 12:49:30.583:WARN [plugin]: Error during loading "/Users/user/Documents/workspace/angular-gantt/node_modules/karma-phantomjs-launcher" plugin: Cannot find module 'phantomjs-prebuilt' 27 02 2016 12:49:30.686:WARN [watcher]: Pattern "/Users/user/Documents/workspace/angular-gantt/test/mock/**/*.js" does not match any file. START: 27 02 2016 12:49:30.729:INFO [karma]: Karma v0.13.21 server started at http://localhost:9876/ 27 02 2016 12:49:30.731:WARN [launcher]: Can not load "PhantomJS", it is not registered! Perhaps you are missing some plugin?
っとエラーで止まってしまった、「phatomjs-prebuiltが見つかりません。」っと言われてしまいました。
おそらくさっきのnpmのinstallの時の
npm WARN deprecated phantomjs@2.1.3: Package renamed to phantomjs-prebuilt. Please update 'phantomjs' package references to 'phantomjs-prebuilt'
が影響してる様子なので、
$ npm install phantomjs-prebuilt --save-dev
を実行。
それで再度
$ grunt
なんだかうまく言った感じです。
ディレクトリのassetsの中身が増えていることが確認できます。
「*.js.map」といったようなファイルが増えていることとおもいます。
この「.js.map」拡張子のファイルは「.js」ファイルの圧縮したファイルのことです。
gruntはこのようにjsファイルを一括で圧縮してくれたりします。
今度はディレクトリ配下のdemoフォルダに移動して、
$ cd demo/
そこで
$ grunt Loading "Gruntfile.js" tasks...ERROR >> Error: Cannot find module 'load-grunt-tasks' Warning: Task "default" not found. Use --force to continue. Aborted due to warnings.
はい。エラー。。
どうやらこれについては、npmのバージョンが違いのために起こっているようです。
なので、npmをアップデート
$ npm update npm -g
demoディレクトリで
$ npm install $ bower install
やっとここでgrunt
$ grunt Running "newer:jshint" (newer) task Running "newer:jshint:all" (newer) task No newer files to process. Running "newer:jshint:test" (newer) task No newer files to process. ........... ........... ...........
そしてまたひとつ上のディレクトリに戻って
下を実行。
$ bower link $ cd demo $ bower link angular-gantt folder.
このコマンドでは/demo/bower_component/angular-ganttにこのソース自身にシンボリックリンクをつけています。
これでよしということで、demoをルートディレクトリとしてMAMPを起動。
期待を託して
http://localhost/demo/app/index.html
ここにきて、まだ動かない。
chromeのjavascriptのデバッカーによると、「angularjsが定義されていません」っと。
index.htmlを覗いてみると
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<!-- bower:css --> <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" /> <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.css" /> <link rel="stylesheet" href="bower_components/angular-ui-tree/dist/angular-ui-tree.css" /> <link rel="stylesheet" href="bower_components/angular-gantt/assets/angular-gantt.css" /> <link rel="stylesheet" href="bower_components/angular-gantt/assets/angular-gantt-plugins.css" /> <!-- endbower --> ・・・・・・・・・・・・・ ・・・・・・・・・・・・・ ・・・・・・・・・・・・・ <!-- bower:js --> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/angular-sanitize/angular-sanitize.js"></script> <script src="bower_components/angular-animate/angular-animate.js"></script> <script src="bower_components/angular-strap/dist/angular-strap.js"></script> <script src="bower_components/angular-strap/dist/angular-strap.tpl.js"></script> <script src="bower_components/angular-native-dragdrop/draganddrop.js"></script> <script src="bower_components/angular-ui-tree/dist/angular-ui-tree.js"></script> <script src="bower_components/moment/moment.js"></script> <script src="bower_components/angular-moment/angular-moment.js"></script> <script src="bower_components/angular-gantt/assets/angular-gantt.js"></script> <script src="bower_components/angular-gantt/assets/angular-gantt-plugins.js"></script> <script src="bower_components/moment-range/dist/moment-range.js"></script> <script src="bower_components/css-element-queries/src/ElementQueries.js"></script> <script src="bower_components/css-element-queries/src/ResizeSensor.js"></script> <script src="bower_components/jsPlumb/dist/js/jsPlumb-2.0.7.js"></script> <!-- endbower --> |
bowerの自動生成したフォルダと自動生成された参照先が違っとる。
相対参照なので、demo/app/bower_componentsを見てしまってるわけですな。
なので、ここをエディッタの機能で一括に「bower_components」を「../bower_components」置き換えて出来上がり。
最後、ちょっとやっつけになってしまいましたが、これで一応DEMO画面を観るところまでたどり着くことができました。
便利な機能として、
$ grunt watch --force
っというのもあります。これを効かせておくとjsソースを編集するたびにビルド(.jsから.js.mapに圧縮)をしてくれるみたいです。