2016-12-21 4 views
3

私はAngular 2プロジェクトにwebpackを使用しています。 srcフォルダの中には、グローバルcss folderとコンポーネントと他のフォルダがあります。cssファイルをハッシュ化して追加するwebpack

私のwebpack.config.jsは、srcフォルダの外にあります。

私はdistのフォルダへのcssフォルダをコピーするCopyWebpackPluginを使用しています:

new CopyWebpackPlugin([ 
     { from: 'src/css', to: 'css'} 
    ]), 

私は、CSSのためにも、次のローダーを使用しています:

exports.css = { 
    test: /\.css$/, 
    loader: 'to-string!css?-minimize!postcss', 

}; 

をしかし、契約は、私がしたいということです各cssファイル名にハッシュを追加し、index.htmlに含まれるグローバルファイルであるため、index.htmlのcssファイル名を変更します。これを達成する最良の方法は何ですか?

EDIT:コードを変更しているうちに、ローダープロパティはコンポーネントフォルダ内のcssにのみ適用され、外側のフォルダには適用されません。どうしてこれなの?

答えて

3

https://github.com/webpack/extract-text-webpack-pluginを使用してください。 webpack.config.js

config.plugins.push(
    new ExtractTextPlugin({filename: 'css/[name].[hash].css'}) 
); 
... 
config.module = { 
    rules: [ 
     { 
      test: /\.css$/, 
      exclude: root('src', 'app'), 
      loader: ExtractTextPlugin.extract({ fallbackLoader: 'style-loader', loader: ['css', 'postcss']}) 
     } 
    ] 
} 
0

の例では、アプリケーションのソースのCopyWebpackPluginを使用しないでください。これにより、Webpackのローダーがバイパスされ、Webpackのすべての機能がロックされます。

スタイルシートが必要な場合は、単にES6インポート、requirerequire.ensureまたはSystem.importを使用してください。ミハウ(Michał)が示唆しているように、適切な場合には、生産中にExtractTextPluginを使用することをお勧めします。

関連する問題