如何有条件地应用不同的webpack加载器,具体取决于源条目?

时间:2017-01-16 09:18:18

标签: express webpack serverside-rendering

我有一个使用webpack构建的React应用程序,我想在某些条件下忽略css模块加载。

我有2个webpack配置:

  1. 我需要为浏览器构建加载所有css模块(暂时不是问题)
  2. 仅当它不是服务器端呈现(SSR)应用树
  3. 时才需要为服务器加载css模块

    这是一些用于说明的伪代码(顺便说一下,应用程序是OSS):

    // webpack.browser.js (standard build)
    {
      entry: './client.jsx',
      module: { loaders: [ { test: /\.scss$/, loaders: ['style', 'css', 'sass'] } ] },
    }
    
    // client.jsx
    import App from './src/App.jsx';
    // ...App includes styles
    
    // webpack.server.js
    {
      entry: './server.js',
      module: { loaders: [ 
        { 
          test: /\.scss$/, 
          loaders: [
            // may be conditionally load scss depending on which express middleware the app is builded
          ] 
         } 
      ] },
    }
    
    // server.js
    // ...
    import App from './src/App.jsx';
    import LandingPage from './src/LandingPage.jsx';
    
    app.use('/app', function ssrMiddleware(req, res) {
      // How to not load scss modules ?
      const html = ReactDOMServer.renderToStaticMarkup(React.createElement(App));
      res.send(html);
    });
    
    app.use('/', function websiteMiddleware(req, res) {
      // How to load scss modules ?
      const html = ReactDOMServer.renderToStaticMarkup(React.createElement(LandingPage));
      res.send(html);
    });
    

    我了解pithing loader,但我不明白它如何解决我的问题。

0 个答案:

没有答案