【发布时间】:2019-11-25 05:32:18
【问题描述】:
我的 NextJS 项目有以下 Webpack 配置:
import path from 'path';
import glob from 'glob';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import webpack from 'webpack';
import dotenv from 'dotenv';
import OptimizeCSSAssetsPlugin from 'optimize-css-assets-webpack-plugin';
import withSass from '@zeit/next-sass';
dotenv.config();
module.exports = withSass({
distDir: '.build',
webpack: (config, { dev, isServer }) => {
if (isServer) {
return config;
}
config.plugins.push(
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1,
}),
);
config.optimization.minimizer.push(
new OptimizeCSSAssetsPlugin({}),
);
return config;
},
});
这使我可以在任何页面中导入任意数量的 scss 文件,并将它们全部捆绑在一起,缩小为单个文件,然后提供:
<link rel="stylesheet" href="/_next/static/css/styles.84a02761.chunk.css">
但是,我非常希望将样式定义作为<style></style> 内联到我的<head> 标记中,而不是<link>。是否可以不堆积大量第三方模块?
如果不是,是否可以至少将生成的<link> 的rel 从stylesheet 更改为preload 并添加添加as="style" crossorigin 到它?
【问题讨论】: