gpt4 book ai didi

angularjs - 在 Angular2 中将 Webpack 与 SASS 和 PostCSS 结合使用

转载 作者:太空狗 更新时间:2023-10-29 18:02:06 32 4
gpt4 key购买 nike

初始化

我正在尝试将 webpack 与 sass-loader 和 postcss-loader 一起使用。我已经尝试过不同的解决方案,但都没有达到我想要的效果。

我尝试了 Angular 2 Starter Pack 中的解决方案使用 raw-loader 和 sass-loader,但 postcss-loader 没有工作。

代码

Angular 2 分量

@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
// styles: [
// require('./app.component.scss')
// ]
})

Webpack 模块加载器

{
test: /\.scss$/,
loaders: ['to-string-loader', 'css-loader', 'postcss-loader', 'resolve-url-loader', 'sass-loader']
}

问题

使用这些代码行一切正常,但样式添加到 <head><style> 内的标签标签。在某些时候,我会有数百条我想避免的样式线。

如果我将加载程序代码更改为:

loader: ExtractTextPlugin.extract('to-string-loader', 'css-loader', 'postcss-loader', 'resolve-url-loader', 'sass-loader?sourceMap')

并将其添加到 webpack 配置中

plugins: [
new ExtractTextPlugin('style.css')
]

它会导致错误

Uncaught Error: Expected 'styles' to be an array of strings.

style.css 实际上链接在html 代码中。

我正在寻找一个允许我使用 sass、postcss 和单个 .css 文件的解决方案。

最佳答案

我刚遇到这个问题并找到了解决方案。我很确定它是“to-string-loader”。下面的开发配置适用于使用 Webpack 4 和 Angular 7 的我。它允许全局样式表(在我的例子中是 Tailwind CSS)和组件样式。热模块替换也适用于编辑这两个条目。

entry: {
app: './src/main',
styles: './src/assets/styles/styles'
},
resolve: {
extensions: ['.ts', '.tsx', '.mjs', '.js', '.scss'],
},
module: {
rules: [
{
// Process the component styles
exclude: path.resolve(__dirname, 'src/assets/styles/styles'),
test: /\.(scss)$/,
use: [
{ loader: 'raw-loader' }, // Load component css as raw strings
{
loader: 'postcss-loader', // Process Tailwind CSS
options: {
sourceMap: 'inline',
}
},
{
loader: 'sass-loader', // Compiles Sass to CSS
},
]
},
{
// Process the global tailwind styles
include: path.resolve(__dirname, 'src/assets/styles/styles'),
test: /\.(scss)$/,
use: [
{
loader: 'style-loader', // Allow for HMR
},
{
loader: 'postcss-loader', // Process Tailwind CSS
options: {
sourceMap: 'inline',
}
},
{
loader: 'sass-loader', // Compiles Sass to CSS
},
]
},
]
},

样式加载器会在运行时将样式提取到头部,并允许 HMR。在您的产品配置中,您可以使用 css-loader 和 MiniCssExtractPlugin 将全局样式作为 .css 文件提取并注入(inject)到头部:

{
// Process the global tailwind styles
include: path.resolve(__dirname, 'src/assets/styles/styles'),
test: /\.(scss)$/,
use: [
{ loader: MiniCssExtractPlugin.loader },
{ loader: 'css-loader' },
{
loader: 'postcss-loader', // Process Tailwind CSS
options: {
sourceMap: false,
}
},
{
loader: 'sass-loader', // Compiles Sass to CSS
},
]
},

关于angularjs - 在 Angular2 中将 Webpack 与 SASS 和 PostCSS 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388099/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com