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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

1381閲覧

npm runの挙動

aya999

総合スコア2

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/09/16 07:56

編集2021/09/16 07:59

質問

npm run dev ```をすると、webpackがインストールされていないのに開発サーバーを実行できる理由をご教授いただけないでしょうか。 # 環境 Window10 ubuntu WLS2 #やりたかったこと 質問内容と直接関係ないです。こちらのVue.jsのライブラリを利用して個人開発をしたいです。 [https://github.com/tvjsx/trading-vue-js](https://github.com/tvjsx/trading-vue-js) #どのようにして疑問が生まれたか 上のリンクをgit cloneしました。 githubのREADMEを参考にし、```npm install```をし、```npm run dev```を行えばサンプル(開発用サーバーが開きlocalhost:8080にhelloworld的なものが表示される)を実行できる状態にしました。 サンプルは実行できたのですが、ふと、```npm run dev```ってなにをしてるの?と思いました。 次にこちらのサイトを見ました。 [https://qiita.com/hashrock/items/15f4a4961183cfbb2658](https://qiita.com/hashrock/items/15f4a4961183cfbb2658) 以下がcloneしたライブラリのpackage.jsonのdevの行です。

"dev": "webpack serve --config webpack/dev.config.js --mode development --progress --hot"

拝見したqiitaの記事によると、

webpack serve --config webpack/dev.config.js --mode development --progress --hot

をターミナルで実行すれば同じことができるそうだったのでやってみると、 webpackがないのでインストールしてくださいというエラーが起こりました。 sudo apt get webpackでwebpackをインストールすると、無事```npm run dev```で行ったのと同じようにサンプルを実行できました。 # 考えたこと ```npm run dev```のときだけwebpackがなくても実行できる理由として、npm runをすると内部処理みたいなのが自動的にインターネットからwebpackのライブラリを一時的に持ってきて実行してくれる仕組み(初心者の妄言なのでなにを言ってるか分からないかもしれませんが)があり、オフラインでやったら失敗するのでは?と思いやってみたところ、普通に動きました。ローカルで完結しているようです 同じ環境(WSL2)のサブ機で同じことをしてみましたが変わらずでした。 webpackについて調べましたが解決せず、こちらで質問させていただきました。

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

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

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

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

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

aya999

2021/09/16 09:06

ご回答ありがとうございます! webpack serve --config webpack/dev.config.js --mode development --progress --hotを trading-vue-js/ のディレクトリ(package.jsonとかがあるところ) で実行すると、 bash: /usr/bin/webpack: No such file or directory というエラーがでます。 私が一度webpackをinstallしたのちapt removeしてしまったせいなのか、 webpackのPATHがおかしくなっているようです。 この /usr/bin/webpack を探しに行くというのはどこで定義されているのでしょうか。
aya999

2021/09/16 09:06

追記 githubで#をつかって行数をハイライトできるの初めて知りました!
hoshi-takanori

2021/09/16 09:15

すでに回答がついてる通り、npm run は node_modules の中の webpack コマンドがある場所を PATH に追加して実行するので、webpack を直接実行しても webpack は見つかりませんが、npm run すれば node_modules の中にある webpack が実行されることになります。
aya999

2021/09/16 09:20

先ほど返信した際、回答に気づいておらず、理解しました。 この場合、回答者様をベストアンサーにせざるを得なく、心苦しいですが、コメントしていただいて本当にありがとうございました。
hoshi-takanori

2021/09/16 09:24

この欄に書いてるのは回答未満だと思ってるからなので、お気になさらず。 追記。github では行番号をクリック (shift + クリック) でその行をハイライトできて、URL にも # が付加されます。
aya999

2021/09/16 09:36

やってみて今感動しています。 本当にありがとうございます!
guest

回答1

0

ベストアンサー

参考記事: 知らないのは損!npmに同梱されているnpxがすごい便利なコマンドだった

Node.jsのpackage.jsonにコマンドラインツール用の記述をして
それをnpm install -gという風に-gオプションで導入すると
nodenpmが入っている実行ファイルと同じディレクトリに実行ファイルが追加されて
対応したNode.jsのファイルを実行する挙動を定義できます。

これが第一段階、webpack等のNode.js製コマンドはこうして作られています。
でも毎回-gオプション付きで実行するのは面倒くさい。

そういう要望の為に、普通にnpm install パッケージ名で導入したライブラリは、
node_modules/.bin/配下に実行ファイルとして生成されます。
なのでnpm installでWebpackさえ導入してしまえば、node_modules/.bin/webpack [オプション]で実行出来ます。

ふと、npm run devってなにをしてるの?と思いました。

普段我々がターミナルで何かしらのコマンドを実行していますが、
その時の解決方法は環境変数のPATHに書いてあるディレクトリを左から順番に見ていき、
同名の実行ファイルがあれば実行するし、一つも無ければコマンドないよエラーになるわけです。

package.jsonでnpm-scriptsを定義して実行した場合
一時的に環境変数のPATHにプロジェクトルート/node_modules/.binを追加する挙動をします。
なのでnpm-scripts内ではグローバルインストールしていないwebpackが使えるようになります。

投稿2021/09/16 08:57

miyabi-sun

総合スコア21395

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

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

aya999

2021/09/16 09:35

懇親丁寧なご回答ありがとうございます。 教えていいただいた内容を自分で確かめるため、 node_modules/.bin/webpack serve --config webpack/dev.config.js --mode development --progress --hot とすると、実行することができました。 webpackの場所は探しましたが.binの中にあるとは。。自分では気づきませんでしたし勉強が必要だと思いました。 この度は誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問