2016-10-18 6 views
2

dependencydevDependencyの両方に書かれているにもかかわらず、私はまだ、 'build time'ステップに必要なモジュールをどのように進めるべきか混乱しています。npm startが動作します。`gulp build`とノード依存性devDependency

私のプロジェクトではnpm startが動作する前にgulp buildに電話する必要があります。構築ステップにおける活動の例には、蒸散およびバンドリングが含まれる。 official docsは、具体的に言うと、依存関係のセクションではなく、代わりにdevDependenciesセクションにtranspilersを含めるように言います。その他のベストプラクティスでは、自動生成されたコードをgit/modulesから削除する必要があります。これらをまとめると、私は何をすべきか理解できません。誰かが私のモジュールを蒸散や建築なしでダウンロードして実行することはできません。これらのステップは、トランスバータ/バンドラ/などなしでは完了できません。依存関係のセクションにあります。 (または「実行中」は「開発」と見なされますか?)

この状況でノードプロジェクトはどのように正しく構成されていますか?

答えて

2

プロダクションモードでアプリを実行する必要がないものはすべてdevDependencyである必要があります。これには、すべてのビルドツールが含まれます。

gulp buildは、自動ビルドサーバー上で実行し、アプリケーションを実行するために必要なものを作成する必要があります(例えば、transpiled JSやwebpackバンドルなど)。エントリポイントは、libに/インデックスです。この不自然な例では

{ 
    ... 
    "scripts": { 
     "build": "gulp build", 
     "start": "NODE_ENV=production node lib/index" 
    } 
    ... 
} 

npm install 
gulp build 
# or better make it a script in package.json 
# npm run build 
# remove devDependencies - no longer needed 
npm prune --production 
npm start 

あなたのpackage.jsonのようなものが含まれます:あなたのビルドスクリプトは何かのようにする必要があります。