2016-10-27 10 views
0

私は、フロントエンドの開発者向けにnpmスクリプトを使用してビルドシステムを開発しており、package.jsonscriptsセクションにいくつかのタスクが定義されています。縮小化CSS、コードリンティング、ドキュメントを生成し、JavaScriptをtranspiling ...などなどnpmスクリプトは、devDependeciesにリストされているパッケージを再インストールした後に動作しません。

たとえば$ npm run buildため、CLI経由でコマンドを実行することにより、期待される結果を達成するため定義されたすべてのスクリプトタスク、$ npm run docs$ npm run watch:これらは一般的なようなタスクが含まれます...新鮮な私はこれを行うに必要なノードパッケージのインストール後、ビルドシステムが正常に再生することができることをテストする

  1. プロジェクトディレクトリの複製を作ります。
  2. node_modulesフォルダを重複したプロジェクトディレクトリから削除します。
  3. $ npm installを経由して複製プロジェクトディレクトリに新しいインストールを実行します。

package.jsondevDependenciesセクションに記載されているものに基づいて、必要なノードパッケージをダウンロードします。

npm installのように定義されたスクリプトタスクの一部は、$ npm run watchのように定義されていません。さらに調査したところ、No。重複したプロジェクトディレクトリ(つまり、新規インストール後のもの)の 'node_modules'フォルダにリストされているトップレベルパッケージのうち、タスクが正常に実行された元のプロジェクトディレクトリの約30分の1です。欠けているパッケージはすべて、私がインストールしたパッケージが依存しているサブ依存関係のようです。

$ npm listまた、CLIを使用して元のプロジェクトディレクトリとdupedプロジェクトディレクトリ(つまり、新しくインストールされたディレクトリ)の両方で実行している場合、リストされているパッケージが異なります。

私は現在、node_modulesフォルダ(およびその内容)をプロジェクトディレクトリに含めずに共有することはできません。理想的には、定型コードを他の開発者と共有したいのですが、それらは単にプロジェクトディレクトリにcd$ npm installを実行するだけです。

この問題の解決方法についてご意見をお寄せいただきありがとうございます。これまでに遭遇したことではありません。

ありがとうございます。

答えて

1

私の推測では、あなたのバージョンの範囲は(^~、または*で)あなたのpackage.jsonに緩く指定されていることです。元のディレクトリに古いバージョンが含まれています。 npm installを新しいディレクトリで実行すると、後で(互換性のない)バージョンがインストールされます(依存関係が異なる)。

確認するには、元のディレクトリに移動し、npm outdatedを実行します。これにより、インストールされている現在のバージョン、バージョン範囲で許可されている最新のバージョン、package.json、およびパッケージの最新バージョン番号とともに、旧式のすべての依存関係の一覧が表示されます。このように:CurrentWantedバージョン番号のいずれかが異なる場合

$ npm outdated 
Package      Current Wanted Latest Location 
eslint       1.10.3 1.10.3 3.9.1 postcss-import 
eslint-config-i-am-meticulous 2.0.0 2.0.0 5.0.2 postcss-import 
pkg-resolve      0.1.14 0.1.14 0.2.2 postcss-import 
postcss-scss      0.1.9 0.1.9 0.4.0 postcss-import 

、新鮮な新しいディレクトリにインストールをインストールされている別のバージョンになります。

npmパッケージのほとんどはSemVerです。 package.jsonのバージョン番号に*を使用しない限り、大部分の変更を破棄するのは安全です。しかし、パッケージ作成者は人間であり、時にはセーバーを台無しにする。また、いくつかのnpmパッケージには、セミバーに従わないものがあります。これらのパッケージは使用しないでください。バージョン番号を固定する必要があります。

package.jsondevDependenciesセクションを投稿すると便利です。

関連する問題