suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Tree Shake, SideEffects und CSS von Vue und Webpack: Laden Sie CSS-Dateien nicht verwendeter Komponenten

<p>Wir versuchen herauszufinden, wie CSS-Bäume in Vue-Einzeldateikomponenten bei Verwendung von Webpack richtig gehandhabt werden. </p> <p>In package.json habe ich: <code>"sideEffects": ["*.css", "*.less","*.vue" ]</code>, This scheint ordnungsgemäß zu verhindern, dass Vue-Komponenten geladen werden, wenn dies nicht der Fall sein sollte. Allerdings wird jedes einzelne <code><style></code>-Tag auf die Seite geladen. </p> <p>Wir laden unseren SFC aus einem NPM-Paket, das eine Reihe von Exporten auflistet, zum Beispiel: </p> <pre class="brush:php;toolbar:false;">bla aus 'blah.vue' exportieren; exportiere blah2 aus 'blah2.vue'; exportiere blah3 aus 'blah3.vue';</pre> <p>Selbst wenn wir nur <code>import { blah3 } from 'a-npm-package';</code> haben, werden die Stile für alle drei Komponenten enthalten sein. Da wir viele Vue-Komponenten haben, führt dies dazu, dass der Seite viel ungenutztes CSS hinzugefügt wird. </p> <p>Wie verhindern wir, dass das passiert? Es gibt definitiv bessere und dynamischere Möglichkeiten, mit Stilen umzugehen, als sie einfach alle auf der Seite abzulegen, selbst wenn nur 1/10 davon verwendet wird. </p> <p>Vielen Dank</p>
P粉068174996P粉068174996460 Tage vor588

Antworte allen(1)Ich werde antworten

  • P粉884548619

    P粉8845486192023-08-26 09:13:35

    你可以使用MiniCssExtractPlugin来进行CSS的树摇。如果你使用的是scss或sass,你也可以添加这些loader。

    // webpack.config.js (production)
    const path = require('path')
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    
    module.exports = {
      mode: 'production',
    
      entry: path.resolve('src/index.js'),
    
      output: {
        filename: '[name].js',
        path: path.resolve('dist'),
      },
    
      module: {
        rules: [
          {
            test: /\.jsx?$/,
            loader: 'babel-loader',
            exclude: /node_modules/,
          },
          {
            test: /\.css$/,
            exclude: /node_modules/,
            use: [
              // 将css提取到文件中
              MiniCssExtractPlugin.loader,
              // 处理你的应用程序中的`.css`文件的导入
              'css-loader',
            ],
          },
        ],
      },
      plugins: [
        // 将所有的css提取到一个单独的文件中
        new MiniCssExtractPlugin({
          filename: '[name].css',
        }),
      ],
    }

    Antwort
    0
  • StornierenAntwort