postcss / postcss-bem-linter

A BEM linter for postcss
MIT License
572 stars 35 forks source link

Implicit component file name customisation #135

Open robertjk opened 6 years ago

robertjk commented 6 years ago

Can you provide a way to customise the way a component name is implied from the file name?

I'm having an Angular project in which I'd like to use your plugin. In Angular it's recommended to name the stylesheet for SomeThing component some-thing.component.scss.

This plugin then throws an error Invalid component name from implicit conversion from filename (...)/src/app/shared/some-thing/some-thing.component.scss. I assume the problem is that after removing the extension .scss the plugin is left with some-thing.component which has dot in it, which it doesn't know how to handle.

  1. An easy way to fix that would be to add a configuration option, which would specify a suffix added to component files. E.g.: implicitComponentsSuffix: '.component'
  2. More flexible solution would be to use a regular expression, which would define how component name is found in the file name (with extension removed). The capture group in that regular expression extracts the component name. E.g.: implicitComponentsNameExtract: /^(.+)\.component$/

Is there a chance to provide an option to configure that?

simonsmith commented 5 years ago

Just looking at this now. The Regex option could be a good route to go. In this example though, what should happen if I had a regex and extracted some-thing from some-thing.component.scss and tried to match it against SomeThing. This would still fail currently.

amk221 commented 5 years ago

+1 for Ember land

/components/foo           <----
    /index.hbs
    /index.js
    /index.scss

So in the above example, I would like to auto-define foo as the stylesheet namespace.