Мне удалось вдвое сократить время загрузки моего файла .scss с помощью шага postcss-loader, который пропускает css через cssnano следующим образом:
- Добавьте следующие пакеты npm впроект:
npm install postcss-loader --save-dev
npm install postcss-import --save-dev
npm install postcss-preset-env --save-dev
npm install cssnano --save-dev
- Добавьте файл
postcss.config.js
на том же уровне, что и основной файл package.json
, со следующим содержимым:
module.exports = {
plugins: {
'postcss-import': {},
'postcss-preset-env': {},
'cssnano': {
preset: ['default', {
normalizeUrl: false
}]
}
}
}
В
webpack.config.js
добавьте
postcss-loader
после
css-loader
в список загрузчиков для файлов .css и .scss:
{
test: /\.css$/,
use: [
{ loader: "css-loader", options: { url: false } },
"postcss-loader"
]
},
{
test: /\.scss$/,
use: [
{ loader: "css-loader", options: { url: false } },
"postcss-loader",
"sass-loader"
]
},
Примечание :Мне пришлось использовать параметр normalizeUrl: false
на cssnano, чтобы он не мешал URL ресурсов, например, background-image: url("res://background");
, иначе фоновое изображение не появилось бы.
Чтобы получить какие-либо дальнейшие улучшения, я планирую принятьлюбые специфичные для страницы файлы .scss из глобальных app.???.scss
файлов и добавляйте их при загрузке страницы, т. е. с помощью this.page.addCssFile()
.