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

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

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

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

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Node.js

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

JavaScript

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

Q&A

解決済

1回答

2250閲覧

npmで管理されているパッケージのpackage-lock.jsonについて

dameo

総合スコア943

npm

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

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Node.js

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

JavaScript

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

2グッド

2クリップ

投稿2019/11/02 20:25

編集2019/11/03 00:50

前提・実現したいこと

lovefieldというプロジェクトをビルドして、dist/以下のファイルを再現したいと思っています。

発生している問題・エラーメッセージ

Dev Setup for Lovefieldを読み、下記を実行してビルドをしたところ、

sh

1git clone https://github.com/google/lovefield 2cd lovefield 3npm install 4gulp build target=lib

dist/lf.js が出来たのですが、これが配布されているどのdist/*.jsとも違います。
(本来の記述ではnpm updateとなっているところを、npm installにしています)

質問
そもそもjavascriptよく分かってないのですが、どれとも一致しない原因が、package-lock.jsonがgit管理されてないせいだと思っています。何か勘違いしているのでしょうか?
npmで管理されているパッケージって、そもそも一般的に依存パッケージのバージョンをどう管理するものなのかも、合わせてご教示頂けると幸いです。

試したこと

gulp実行時、mode=debugも追加指定して中を見る限り、Closure Compilerは正しく動いているようですが、出力されているシンボルが違ってるように見えます。Closure Compilerのバージョンが違っているからだと思っています。

sh

1$ npm list | grep compiler 2├── google-closure-compiler-java@20191027.0.0 3├─┬ gulp-closure-compiler@0.4.0 4│ ├─┬ google-closure-compiler@20151015.7.0

Closure CompilerはJavaバージョン(google-closure-compiler-java)が稼働しているようなのですが、これのバージョンが20191027.0.0と新しすぎるから、そう思っています。

補足情報(FW/ツールのバージョンなど)

OS: Ubuntu 19.04
npm: 6.12.0
JRE: openjdk 11.0.4 2019-07-16

set0gut1👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそもjavascriptよく分かってないのですが、どれとも一致しない原因が、package-lock.jsonがgit管理されてないせいだと思っています。何か勘違いしているのでしょうか?

その理解であってます

直接の依存ではないパッケージのバージョンが変化したりしているのでしょう。ビルドしたときの情報をだれかから聞かないと無理でしょう。

というか最後のリリース3年くらい前でNode.jsが4のころに見えます。masterはそこからcommitは進んでいるようです。

まあ同一の生成物を作るのは今となっては実質無理でしょう。

npmで管理されているパッケージって、そもそも一般的に依存パッケージのバージョンをどう管理するものなのかも、合わせてご教示頂けると幸いです。

package-lock.jsonをgit管理に含めます。

投稿2019/11/03 06:56

yumetodo

総合スコア5850

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

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

dameo

2019/11/03 08:30

ありがとうございます。 javascript詳しくなくて、普通こうだというのがよく分からないため、ハッキリ言って頂けると安心します。パッケージ管理ツールっていろいろありますし、もしかして他の有名な手段が使われてたりするのかもと思って聞いたのですが、なさそうだってことなんですね。 質問に対する回答としては以上で十分です。ありがとうございました。 以下、実現したいことについて試したことと、自分としての結論を書いておきます。 確かに2017年2月初旬とnpmリリースは古いのですが、こちらはソースとしてmasterを使ってるので、npmへのリリースタイミングよりも、dist/の下のコミットタイミングが重要になります。調べてみると6月初旬くらいにpackage.jsonがコミットされており、同月下旬にdistの下のファイルに変化があったので、6月初旬に合わせてパッケージバージョンを合わせてみました。 (npm-time-machineというパッケージを取ってきて、これをdevDependencies対応させたものを使用し、package.jsonを固定バージョンに書き換えました) ただ、これをやってみても、Closure Compilerのオプションをいじってみても、結局全く違うファイルしか出来上がらず、npm向けのdistはClosure Compiler使ってないんじゃないか?と結論して諦めました。ようは何か別の未公開ツールを使うのではないかと考えたということです。
yumetodo

2019/11/03 09:03

ん、dist/にリリース!?なんじゃそれ。 まあこのパッケージはともかく、webpack全盛の今だと一般にはClosure Compilerではなくterser(webpackでoptimize: trueしてたら勝手に使われる)を使うと思います。
dameo

2019/11/03 11:12

何か分かりにくい部分があったのならすみません。 やったことありませんが、npm publishがリリースで、そこでpackage.jsonのfile記述にあるものが載るイメージです。 dist/はfile記述にあり、開発者はソース・ファイルをメンテナンスして、(このパッケージでは?)dist/を主として作成していき、来るべきタイミングでタグ付けしてpublishすると思っています。 今こちらでは、gitから直にmasterをcloneしてbuildしているので、(比較対象となるファイルを含む)dist/へのコミットタイミングが重要ということです。 おっしゃられるとおり、webpackの出力指定でminifyなどを行うのが一般的なのは知っています。ただ方法は、webpackを使うにしてもwebpack.config.js相当が必要で、他も合わせて方法やその組み合わせ、設定はいくらでもあるようです。Closure Compilerがやることはminifyなどとは少し違うのですが、設定ファイルなど取っ掛かりもないところを合わせて、未公開のツールと表現させてもらいました。 ただ出力を見た感じだと、そもそもwebpackっぽいなぁとは思っていました。Closure Compilerのオプション指定にも依るのですが、順番とか整形とかではなく、モノが違う(シンボルが違うなどと表現していた)からです。適当に一発webpack使ってみるとかも出来なくはないですが、設定ファイルとかドキュメントとか、それが関連すると思わせる取っ掛かりないのに当てずっぽうで始めるのは興が乗らないというか、面倒なんですよね。やるかもしれませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問