2017-08-29 18 views
1

私は、個々のサービス(および特定のバージョン)を含むいずれかのオプションを持っていたい...のは、私はなど、異なるタイプのサービスの構成、クライアント、awesome-serviceを持ってhttp-servicelog-service言う複数のNPMリポジトリが1つのGitHubリポジトリにスコープ付きで表示されますか?

をしてみましょうか、

const awesomeService = require('@awesome-service'); 
// Now awesomeService has 
// awesomeService.httpService; 
// awesomeService.logService; 
// etc 

// or individually 
const httpService = require('@awesome-service/http-service'); 

このことが可能です:私のようなものが欲しい効果でそうただ、awesome-servicesのすべてを必要としますか? package.jsonとGitHubの組織はどのように見えますか?多分これはpackage.jsonですか?

"dependencies": { 
    "awesome-service": "@awesome-service" 
    // OR if individually importing them 
    "http-service": "@awesome-service/http-service#1.0.0" 
} 

これをどのように達成することができますか、それとも達成することができますか?

+0

関連:[(SE上)NPMでのオプションの依存関係](https://softwareengineering.stackexchange.com/questions/238257/optional-dependencies-in-npm) – spectras

答えて

0

これは可能ですか?

はい、可能です。

package.jsonとGitHubの組織はどのように見えますか?あなたは3つのpackage.jsonファイルがある見たよう

- awesome-service 
    - index.js  // main module 
    - package.json // package.json of the main package 
    - http-service 
    - index.js  // implementation of `http` service 
    - package.json // package.json of `http` package 
    - log-service 
    - index.js  // implementation of `log` service 
    - package.json // package.json of `log` package 

パッケージには、次のような構造を持っている必要があります。ルートはメインパッケージに使用され、ルートは各サービスに使用されます。各package.jsonで

index.jsmainフィールドを設定し、各パッケージの正しい名前を設定:フィールドを持つオブジェクトをエクスポートするルートパッケージのindex.js

{ 
    "name": "awesome-service", 
    "main": "index.js", 
    ... 
} 

{ 
    "name": "[email protected]", 
    "main": "index.js", 
    ... 
} 

{ 
    "name": "[email protected]", 
    "main": "index.js", 
    ... 
} 

を - 必要なサービス(Iドン」このモジュールはデフォルトでロードされるため、t)は、必要としてindex.jsを指定:

module.exports = { 
    httpService: require('./http-service'), 
    logService: require('./log-service') 
}; 

別に、あなたがNPMでそれらのすべてを追加するか、または適切なURLでgithubのを使用する必要がありますこれら三つのパッケージを使用するには:

"dependencies": { 
    "awesome-service": "awesome-service" 
    "http-service": "[email protected]#1.0.0", 
    "log-service": "git+https://github.com/yourAccount/awesome-service/log-service.git" 
} 
+0

私が尋ねたものではないのです。これは、異なるバージョンの個々の "サブ"サービスのインポートをサポートしていません。つまり、私は 'log-service'にバンプし、' log-service'を更新し、 'http-service'の古いバージョンを維持したいだけです。 – Kousha

+0

@Kousha私は答えを更新しました。 – alexmac

関連する問題