2017-09-05 207 views
0

我正在使用「selector-class-pattern」stylelint規則。我使用的模式是強制執行ECSS命名標準。該規則是這樣的:Stylelint - 確保類名前綴匹配文件夾名稱

"selector-class-pattern": ["^[a-z]([a-z0-9]){1,3}-[A-Z][a-zA-Z0-9]+(_[A-Z][a-zA-Z0-9]+)?(-([a-z0-9-]+)?[a-z0-9])?$", { "resolveNestedSelectors": true }] 

一種ECSS類名稱使用3份(模塊名稱,組件名稱,元素名稱),並看起來像.mod-Component_Element {}其中mod是模塊名稱的縮寫。

我的SCSS文件保存在組件文件夾中,所以文件夾結構如下所示,其中app是模塊的名稱。

app 
-- component-name 
    -- component-name.component.js 
    -- component-name.component.scss 

我想一個stylelint規則,以確保模塊和類名的組成部分,他們所在的文件夾相匹配。因此,類名保存在例如組件name.component.scss文件將被限制爲.app-ComponentName_ElementName {},其中ElementName是可選的,可以是任何東西。

我使用咕嘟咕嘟運行stylelint:

gulp.task('css',() => { 
    let processors = [ 
    // add postcss processors here 
    ]; 
    return gulp.src([ 
    path.join(gconfig.rootDir, 'vars.style.scss'), 
    path.join(gconfig.rootDir, 'style.scss'), 
    path.join(gconfig.rootDir, gconfig.rootModule, '**/*.scss'), 
    ]) 
    .pipe(stylelint({ 
     failAfterError: false, 
     reporters: [ {formatter: 'string', console: true} ] 
    })) 
    .pipe(gif(debug, sourcemaps.init())) 
    .pipe(cssimport()) 
    .pipe(concat(`${gconfig.projectName}.style.css`)) 
    .pipe(scss().on('error', scss.logError)) 
    .pipe(postcss(processors)) 
    .pipe(gif(debug, sourcemaps.write())) 
    .pipe(gulp.dest(path.join(gconfig.outDir, 'css'))) 
}); 

我明白我可能需要爲此編寫一個插件,但不知道是否已經有這樣的事情一個插件在那裏,或者有可以通過將文件名/文件夾從Gulp傳遞給stylelint嗎?

回答