【问题标题】:How can I configure webpack to load and optimize a CSS file如何配置 webpack 以加载和优化 CSS 文件
【发布时间】:2017-04-18 00:12:50
【问题描述】:

在首页,我有一个“松散”的 CSS 文件(@imports 其他 CSS 文件),我想将它作为全局 CSS 样式为网站加载。该网站本身正在改造,但它还没有准备好完成整个模块加载系统,所以目前,客户端将首先点击一个 index.html 的等价物(并且在它下面将是模块加载的组件,我'将使用 webpack 进行编译)

我希望能够使用 webpack 获取全局 CSS 并对其进行优化(通过 PostCSS 和其他插件)。但看起来 webpack 只喜欢实际的基于 javascript 的入口点。

我的策略是告诉 webpack 使用全局 CSS 作为入口点,并生成一个优化和捆绑的 CSS,其中包含该全局 CSS 中的所有 @imported CSS。

我是否必须在该文件上单独运行 PostCSS 之类的东西?或者显式加载 PostCSS,然后在 webpack 配置中运行它(如果是这样,最好的方法是什么?)。

【问题讨论】:

  • 它类似于这个问题:stackoverflow.com/q/38615076/223362 只是代替 Less,我将使用 PostCSS 将 CSS“编译”成正常的东西。我想我们都只是想利用 webpack 的环境,但不必绑定到 .js 入口点系统。

标签: css optimization webpack bundle


【解决方案1】:

目前,我正在使用 PostCSS 网站上的 JS API 示例,以便将其用作读取我的全局 CSS 并将其转换为普通 CSS 以包含在首页中的基础。

(来自JS API sample

const fs = require('fs');
const postcss = require('postcss');
const precss = require('precss');
const autoprefixer = require('autoprefixer');

fs.readFile('src/app.css', (err, css) => {
    postcss([precss, autoprefixer])
        .process(css, { from: 'src/app.css', to: 'dest/app.css' })
        .then(result => {
            fs.writeFile('dest/app.css', result.css);
            if ( result.map ) fs.writeFile('dest/app.css.map', result.map);
        });
});

【讨论】:

  • 我拒绝接受我自己的答案,因为确实应该有一些感觉更正式的东西。我想我可以把它变成一个插件,或者也许已经有一个可以做到这一点。 (有一个执行shell命令:npmjs.com/package/webpack-shell-plugin
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多