我有一个使用 的 Webpack 3 设置ExtractTextPlugin
,并且localIdentName
不适用于从 生成的 CSS 类node_modules
,特别是从react-spinkit
包生成的 CSS 类。
我正在使用<Spinner />
来自 的组件react-spinkit
,它正在生成以下 CSS 类:
您会看到模块导入的类显然没有localIdentName
应用散列。
ExtractTextPlugin
似乎正在正确生成类名,如我的app.css
输出文件中所示:
Webpack 总是让我每次使用它时都了解它是如何工作的。这是我的配置文件:
const path = require('path');
const webpack = require('webpack');
const { CheckerPlugin } = require('awesome-typescript-loader');
const ManifestPlugin = require('webpack-manifest-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const config = {
devtool: 'source-map',
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx', '.css'],
modules: ['node_modules', 'app'],
alias: {
Assets: path.resolve(__dirname, '../../src/assets')
}
},
entry: {
app: [
'webpack-hot-middleware/client?reload=true',
'./src/client.tsx'
]
},
output: {
path: path.resolve('./build/public'),
publicPath: '/public/',
filename: 'js/[name].js',
pathinfo: true
},
module: {
rules: [{
enforce: 'pre',
test: /\.tsx?$/,
loader: 'tslint-loader'
},
{
test: /\.tsx?$/,
loader: 'react-hot-loader!awesome-typescript-loader'
},
{
test: /\.jsx$/,
loader: 'babel-loader'
},
{
test: /\.json$/,
loader: 'json-loader'
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{
loader: 'css-loader',
options: {
importLoaders: 1,
localIdentName: '[path][name]__[local]--[hash:base64:5]',
modules: true
}
},
'postcss-loader'
]
}),
},
{
test: /\.eot(\?.*)?$/,
loader: 'file-loader?name=fonts/[hash].[ext]'
},
{
test: /\.(woff|woff2)(\?.*)?$/,
loader: 'file-loader?name=fonts/[hash].[ext]'
},
{
test: /\.ttf(\?.*)?$/,
loader: 'url-loader?limit=10000&mimetype=application/octet-stream&name=fonts/[hash].[ext]'
},
{
test: /\.svg(\?.*)?$/,
loader: 'url-loader?limit=10000&mimetype=image/svg+xml&name=fonts/[hash].[ext]'
},
{
test: /\.(jpe?g|png|gif)$/i,
loader: 'url-loader?limit=1000&name=images/[hash].[ext]'
}
]
},
plugins: [
new CheckerPlugin(),
new ManifestPlugin({
fileName: '../manifest.json'
}),
new webpack.DefinePlugin({
'process.env': {
BROWSER: JSON.stringify(true),
NODE_ENV: JSON.stringify('development')
}
}),
new ExtractTextPlugin('[name].css'),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin()
]
};
感谢您提前输入!