Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using webpack file-loader doesn't work with styleguidist #82

Closed
gregmuellegger opened this issue Feb 8, 2016 · 7 comments
Closed

Using webpack file-loader doesn't work with styleguidist #82

gregmuellegger opened this issue Feb 8, 2016 · 7 comments

Comments

@gregmuellegger
Copy link

Hi, thanks for this nice tool!

I tried to integrate a webfont into my styles and configured webpack (also the styleguide webpack config) to load fonts like this:

loaders: [
    ...
    { test: /\.eot(\?.*)?$/, loader: ["file-loader"] },
]

This works well for my normal webpack setup in developmernt but fails when using styleguidist server and styleguidist build. When I view the styleguide, it just doesn't pick up my custom webfont, but uses the system fallback.

I don't get any errors for the SCSS compilation and no webpack loader errors, so I'm sure the paths to the font files are correct (again, outside styleguidist, the webpack config works). Now the funny part: if I switch the file-loader to out and use url-loader then it works!

I assume that the styleguidist development server/webpack config doesn't serve the EOT font file correctly. The strange thing on this side though is that I don't get any errors for failing HTTP requests in the Chrome Network tab.

Any ideas on this?

@sapegin
Copy link
Member

sapegin commented Feb 8, 2016

Could you please share your Styleguidist config and styleguidist server --verbose output?

@gregmuellegger
Copy link
Author

styleguide.config.js:

var path = require('path');
var projectWebpackConfig = require('./webpack.config');


module.exports = {
  rootDir: './web/ui',
  components: './atoms/**/*.js',
  getExampleFilename: function(componentpath) {
    return path.join(path.dirname(componentpath), 'README.md');
  },
  getComponentPathLine: function(componentpath) {
    var name = path.basename(componentpath, '.js');
    var dir = path.dirname(componentpath);
    return 'import ' + name + ' from \'' + dir + '\';';
  },
  updateWebpackConfig: function(webpackConfig, env) {
    // Add scss loader.
    webpackConfig.module.loaders = webpackConfig.module.loaders.concat(
      [{ test: /\.js$/, exclude: /node_modules/, loaders: ['babel'] }],
      [projectWebpackConfig.EXPORT.scssLoader],
      projectWebpackConfig.EXPORT.fontLoaders
    );

    webpackConfig.resolve.alias['rsg-components/StyleGuide'] = path.join(
      __dirname, 'web/styleguide/StyleGuide');

    return webpackConfig;
  },
};

styleguidist server --verbose:

$ ./node_modules/react-styleguidist/bin/styleguidist server --verbose

Using config file: /home/gregor/projects/wiki/styleguide.config.js
rootDir:                      /home/gregor/projects/wiki/web/ui
components:                   ./atoms/**/*.js
skipComponentsWithoutExample: false
title:                        Style guide
styleguideDir:                /home/gregor/projects/wiki/styleguide
template:                     /home/gregor/projects/wiki/node_modules/react-styleguidist/src/templates/index.html
serverHost:                   localhost
serverPort:                   3000
highlightTheme:               base16-light
verbose:                      true
getExampleFilename: 

getComponentPathLine: 

updateWebpackConfig: 



Using Webpack config:
entry: 
  - webpack-hot-middleware/client
  - /home/gregor/projects/wiki/node_modules/react-styleguidist/src/index
debug:         true
cache:         true
devtool:       eval-source-map
stats: 
  colors:  true
  reasons: true
plugins: 
  - 

  - 

  - 
    options: 
      title:    Style guide
      template: /home/gregor/projects/wiki/node_modules/react-styleguidist/src/templates/index.html
      inject:   true
  - 
    definitions: 
      process.env: 
        NODE_ENV: "development"
module: 
  loaders: 
    - 
      test: 
        source:     \.jsx?$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      include: 
        - /home/gregor/projects/wiki/node_modules/react-styleguidist/src
        - /home/gregor/projects/wiki/web/ui
      loader:  babel
      query: 
        stage:   0
        plugins: 
          - /home/gregor/projects/wiki/node_modules/babel-plugin-react-transform
        extra: 
          react-transform: 
            transforms: 
              - 
                transform: react-transform-hmr
                imports: 
                  - react
                locals: 
                  - module
              - 
                transform: react-transform-catch-errors
                imports: 
                  - react
                  - redbox-react
    - 
      test: 
        source:     \.json$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: json
    - 
      test: 
        source:     \.css$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      include: /home/gregor/projects/wiki/node_modules/codemirror
      loader:  style!css
    - 
      test: 
        source:     \.css$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      include: 
        - /home/gregor/projects/wiki/node_modules/react-styleguidist/src
        - /home/gregor/projects/wiki/web/ui
      loader:  style!css?modules&importLoaders=1&localIdentName=ReactStyleguidist-[name]__[local]!postcss
    - 
      test: 
        source:     \.js$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      exclude: 
        source:     node_modules
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loaders: 
        - babel
    - 
      test: 
        source:     \.scss$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: style!css?sourceMap!sass
    - 
      test: 
        source:     \.woff2?(\?.*)?$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: url-loader?limit=10000&mimetype=application/font-woff
    - 
      test: 
        source:     \.ttf(\?.*)?$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: file-loader
    - 
      test: 
        source:     \.eot(\?.*)?$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: file-loader
    - 
      test: 
        source:     \.svg(\?.*)?$
        global:     false
        ignoreCase: false
        multiline:  false
        lastIndex:  0
      loader: file-loader
  noParse: 
    - 
      source:     babel-core\/browser.js
      global:     false
      ignoreCase: false
      multiline:  false
      lastIndex:  0
output: 
  path:     /home/gregor/projects/wiki/styleguide
  filename: build/bundle.js
resolve: 
  root:               /home/gregor/projects/wiki/node_modules/react-styleguidist/src
  extensions: 
    - 
    - .js
    - .jsx
  modulesDirectories: 
    - /home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules
    - node_modules
  alias: 
    codemirror:                /home/gregor/projects/wiki/node_modules/codemirror
    rsg-components/StyleGuide: /home/gregor/projects/wiki/web/styleguide/StyleGuide
resolveLoader: 
  modulesDirectories: 
    - /home/gregor/projects/wiki/node_modules/react-styleguidist/loaders
    - /home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules
    - node_modules
postcss: 


Listening at http://localhost:3000


Loading components:
- /home/gregor/projects/wiki/web/ui/atoms/Headline/Headline.js
- /home/gregor/projects/wiki/web/ui/atoms/Headline/index.js
- /home/gregor/projects/wiki/web/ui/atoms/Icon/Icon.js
- /home/gregor/projects/wiki/web/ui/atoms/Icon/index.js
- /home/gregor/projects/wiki/web/ui/atoms/Paragraph/index.js
- /home/gregor/projects/wiki/web/ui/atoms/Paragraph/Paragraph.js

Error when parsing index.js
Error: No suitable component definition found.

Error when parsing index.js
Error: No suitable component definition found.

Error when parsing index.js
Error: No suitable component definition found.

webpack built c4d4f7173ea2de133fa0 in 5401ms

@sapegin
Copy link
Member

sapegin commented Feb 8, 2016

Could you try 2.0.0-rc3? It’s possible the we have a fix for that:

Serve root directory as static in dev-server (so you can access any files inside the root directory).

@gregmuellegger
Copy link
Author

I get a new error, probably because I'm on Babel 5 so far and styleguidist 2 requires Babel 6.

$ ./node_modules/react-styleguidist/bin/styleguidist server          
Listening at http://localhost:3000

webpack built dbac532f0fc772e6c1ba in 706ms
Hash: dbac532f0fc772e6c1ba
Version: webpack 1.12.13
Time: 706ms
          Asset     Size  Chunks       Chunk Names
build/bundle.js  46.9 kB       0       main
chunk    {0} build/bundle.js (main) 8.26 kB [rendered]
    [0] multi main 40 bytes {0} [built] [1 error]
    [1] (webpack)-hot-middleware/client.js 3.39 kB {0} [built]
    [2] (webpack)/buildin/module.js 251 bytes {0} [built]
    [3] ./~/strip-ansi/index.js 161 bytes {0} [built]
    [4] ./~/ansi-regex/index.js 135 bytes {0} [built]
    [5] (webpack)-hot-middleware/client-overlay.js 1.01 kB {0} [built]
    [6] (webpack)-hot-middleware/process-update.js 3.27 kB {0} [built]

ERROR in ./~/react-styleguidist/src/index.js
Module build failed: ReferenceError: [BABEL] /home/gregor/projects/wiki/node_modules/react-styleguidist/src/index.js: Unknown option: /home/gregor/projects/wiki/.babelrc.stage
    at Logger.error (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/logger.js:41:11)
    at OptionManager.mergeOptions (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/options/option-manager.js:289:18)
    at OptionManager.addConfig (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/options/option-manager.js:234:10)
    at OptionManager.findConfigs (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/options/option-manager.js:434:16)
    at OptionManager.init (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/options/option-manager.js:489:12)
    at File.initOptions (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/index.js:211:75)
    at new File (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/file/index.js:129:22)
    at Pipeline.transform (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-core/lib/transformation/pipeline.js:48:16)
    at transpile (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-loader/index.js:14:22)
    at Object.module.exports (/home/gregor/projects/wiki/node_modules/react-styleguidist/node_modules/babel-loader/index.js:88:12)
 @ multi main
Child html-webpack-plugin for "index.html":
         Asset     Size  Chunks       Chunk Names
    index.html  1.12 MB       0       
    chunk    {0} index.html 412 kB [rendered]
        [0] ./~/html-webpack-plugin/lib/loader.js!./~/react-styleguidist/src/templates/index.html 368 bytes {0} [built]
        [1] ./~/lodash/index.js 411 kB {0} [built]
        [2] (webpack)/buildin/module.js 251 bytes {0} [built]

I hope to get the time migrating to Babel 6 sometime soon.

@sapegin
Copy link
Member

sapegin commented Feb 9, 2016

Yeah, it should be because of Babel 5. Not sure we can detect it and show a meaningful warning.

@gregmuellegger
Copy link
Author

I won't be able to migrate anytime soon on this project. So I'm happy if you want to close the ticket. Otherwise I might report back here in a few months how things turned out.

@sapegin
Copy link
Member

sapegin commented Feb 15, 2016

Feel free to reopen if you have issues in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants