Laravelは、いわゆるバックエンド、サーバーサイドのアプリケーションの開発のための使用が主なのですが、フロントエンドの開発にもlarave-mixを通してサポートしています。今回はそちら関連のコマンドやツールの備忘録です。こうたくさん実行するコマンドがあると、もう覚えられない年頃です。

Node.js

Node.jsの登場で、今までのHTMLに以下のようなcdnのリンクを入れてjavascriptで使用するやり方から、

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

以下のように、すべて自分のサイトで1つのcssやjsファイルに皆まとめてトランスパイルして最小化してしまうことが可能になりました。

<link rel="stylesheet" href="/assets/css/all.js">
<script src="/assets/js/all.js"></script>

しかし、そのために初めてjavascriptのコマンドラインでの開発環境が必要となりました。

Node.jsがあなたの環境にインストールされているかどうかは、

$ node -v
v12.4.0

インストールされているなら、nodeコマンドを実行してみてください。

$ node  
Welcome to Node.js v12.4.0.
Type ".help" for more information.
> x = 1
1
> y = 2
2
> x + y
3
> 

tinkerみたいに対話式で実行できます。これは役に立ちそうです。いちいちhtmlにスクリプトにconsole.log()を入れてブラウザでデバッグしていた時代から抜けられるかな。

npm

php言語において、composerというパッケージ管理のツールがあるように、Node.jsでは、npmというパッケージマネージャーがあります。npmがインストールされているかは、以下でチェックします。、

$ npm -v
6.10.2

composer create-projectでLaraveの新規のプロジェクトを作成したら、composer.jsonの情報をもとに、

$ composer install

が自動的に実行されて、vendorのディレクトリにすべての必要なphpのパッケージがダウンロードされて収納されます。

それと同様に、

$ npm install

を実行すると、今度は、package.jsonの情報ををもとにnode_modulesのディレクトリにすべての必要なNode.jsのパッケージがダウンロードされます。

どのパッケージがインストールされたかは、composerでは以下のコマンドでチェックできます。

$ composer show
beyondcode/laravel-dump-server        1.3.0    Symfony Var-Dump Server for Laravel
dnoegel/php-xdg-base-dir              0.1      implementation of xdg base directory specification for php
doctrine/inflector                    v1.3.0   Common String Manipulations with regard to casing and singular/plural rules.
doctrine/instantiator                 1.2.0    A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer                        1.1.0    PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
dragonmantank/cron-expression         v2.3.0   CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due
egulias/email-validator               2.1.11   A library for validating emails against several RFCs
erusev/parsedown                      1.7.3    Parser for Markdown.
fideloper/proxy                       4.2.1    Set trusted proxies for Laravel
filp/whoops                           2.5.0    php error handling for cool kids
fzaninotto/faker                      v1.8.0   Faker is a PHP library that generates fake data for you.
hamcrest/hamcrest-php                 v2.0.0   This is the PHP port of Hamcrest Matchers
jakub-onderka/php-console-color       v0.2    
jakub-onderka/php-console-highlighter v0.4     Highlight PHP code in terminal
laravel/framework                     v5.8.35  The Laravel Framework.
...

同様に、npmでは、

$ npm list
/vol1/usr/www/repos/repos/l58
├─┬ axios@0.19.0
│ ├─┬ follow-redirects@1.5.10
│ │ └─┬ debug@3.1.0
│ │   └── ms@2.0.0
│ └── is-buffer@2.0.3
├── bootstrap@4.3.1
├─┬ cross-env@5.2.1
│ └─┬ cross-spawn@6.0.5
│   ├── nice-try@1.0.5
│   ├── path-key@2.0.1
│   ├── semver@5.7.1
│   ├─┬ shebang-command@1.2.0
│   │ └── shebang-regex@1.0.0
│   └─┬ which@1.3.1
│     └── isexe@2.0.0
├── jquery@3.4.1
├─┬ laravel-mix@4.1.4
...

依存するパッケージが階層で表示されているのでたくさんの表示になってしまいます。–depth 0を付けたら第一階層のみ表示できます。

$ npm list --depth 0
/vol1/usr/www/repos/repos/l58
├── axios@0.19.0
├── bootstrap@4.3.1
├── cross-env@5.2.1
├── jquery@3.4.1
├── laravel-mix@4.1.4
├── lodash@4.17.15
├── popper.js@1.15.0
├── resolve-url-loader@2.3.2
├── sass@1.22.12
├── sass-loader@7.3.1
└── vue@2.6.10

By khino