2016-12-16 11 views
0

SCSSファイルを埋め込むためにscss-lintを使用しています。 Webpackのホットモードで実行するには、scsslint-hotを使用します。WebSpackのscsslint-hot preLoaderがサブディレクトリで動作しない

私はこれをWebpackのpreLoadersに追加しました。ファイルがサブディレクトリにネストされていない限り、正常に動作します。例えば

: ./src/style/layout.scss

が適切LINTEDれます。

しかし

./src/style/mixins/buttons.scssは全くLINTED取得していません。どうして?

私は間違っていますか?私は多くのグーグルグーグルとWebpackのドキュメントでは、にはが含まれているので、サブディレクトリも含めるべきだという。

私の.scss-lint.ymlにはルールしか含まれていませんが、既にscss_files: 'src/style/**/*.scss'をymlファイルに追加しようとしましたが、問題は解決しません。

これは私のwebpack.config.jsの興味深い部分である:

var dir_style = path.resolve(__dirname, 'src', 'style’); 

… 

preLoaders: [ 
    { 
     ... 
    }, 
    { 
     test: /\.scss$/, 
     loader: 'scsslint-hot', 
     include: dir_style, 
     query: { 
      config: '.scss-lint.yml', 
      failOnError: production, 
      failOnWarning: production, 
     } 
    } 
], 

そして多分あなたは、あなたが行くが、私の完全なWebPACKのコンフィグを参照してくださいする必要があります。

var webpack = require('webpack'), 
 
    path = require('path'), 
 
    HtmlWebpackPlugin = require('html-webpack-plugin'), 
 
    autoprefixer = require('autoprefixer'), 
 
    cssnano = require('cssnano'), 
 
    WebpackCleanupPlugin = require('webpack-cleanup-plugin'); 
 
    webpackFailPlugin = require('webpack-fail-plugin'); 
 

 
var production = process.env.NODE_ENV === 'production', 
 
    dir_src = path.resolve(__dirname, 'src'), 
 
    dir_js = path.resolve(dir_src, 'js'), 
 
    dir_style = path.resolve(dir_src, 'style'), 
 
    dir_assets = path.resolve(dir_src, 'assets'), 
 
    dir_public = path.resolve(__dirname, 'public'), 
 
    dir_exclude = /(node_modules|public)/; 
 

 
const HOST = process.env.HOST || "127.0.0.1"; 
 
const PORT = process.env.PORT || "8888"; 
 

 

 
var plugins = [ 
 
    webpackFailPlugin, 
 
    new webpack.HotModuleReplacementPlugin(), 
 
    new HtmlWebpackPlugin({ 
 
     template: './src/template.html' 
 
    }) 
 
]; 
 

 
if (production) { 
 
    plugins.push(
 
     new webpack.NoErrorsPlugin(), // needs to be only set for production otherwise failOnErrors will be ignored 
 

 
     // process.env.NODE_ENV is already set to production through "build" task in 
 
     // package.json, but defining it again reduces file size enormous, but I don't know why 
 
     new webpack.DefinePlugin({ 
 
      'process.env': { 
 
       'NODE_ENV': JSON.stringify('production') 
 
      } 
 
     }), 
 
     new WebpackCleanupPlugin(), 
 
     new webpack.optimize.OccurenceOrderPlugin(), 
 
     new webpack.optimize.DedupePlugin(), 
 
     new webpack.optimize.UglifyJsPlugin({ 
 
      sourceMap: false, 
 
      mangle: true, 
 
      compress: { 
 
       warnings: false 
 
      }, 
 
      output: { 
 
       comments: false 
 
      } 
 
     }), 
 
     new webpack.optimize.MinChunkSizePlugin({minChunkSize: 10000}) 
 
    ); 
 
} 
 

 
module.exports = { 
 
\t entry: { 
 
     index: path.resolve(dir_js, 'index.jsx') 
 
    }, 
 
\t output: { 
 
\t \t path: dir_public, 
 
\t \t filename: '[name]_[hash].min.js' 
 
\t }, 
 
\t resolve: { 
 
\t \t extensions: ['', '.js', '.jsx'] 
 
\t }, 
 
\t module: { 
 
     preLoaders: [ 
 
      { 
 
       test: /\.jsx?$/, 
 
       loader: 'eslint', 
 
       include: dir_js 
 
      }, 
 
      { 
 
       test: /\.scss$/, 
 
       loader: 'scsslint-hot', 
 
       include: dir_style, 
 
       query: { 
 
        config: '.scss-lint.yml', 
 
        failOnError: production, 
 
        failOnWarning: production, 
 
       } 
 
      } 
 
     ], 
 
\t \t loaders: [ 
 
      { 
 
       test: /\.jsx?$/, 
 
       exclude: dir_exclude, 
 
       loader: 'babel', 
 
       query: { 
 
        presets: ['es2015', 'react'], 
 
        plugins: [ 
 
         'transform-runtime', 
 
         'transform-decorators-legacy', 
 
         'transform-class-properties', 
 
         'react-hot-loader/babel' 
 
        ], 
 
        cacheDirectory: true 
 
       } 
 
      }, 
 
      { 
 
       test: /\.scss$/, 
 
       include: dir_style, 
 
       loaders: ['style', production ? 'css' :'css?sourceMap', 'postcss', 'sass'] 
 
      }, 
 
      { 
 
       test: /\.(png|jpe?g|gif|mp3|svg)$/, 
 
       include: dir_assets, 
 
       exclude: dir_exclude, 
 
       loader: 'url-loader?limit=10000' 
 
      } 
 
     ] 
 
\t }, 
 
\t devServer: { 
 
\t \t contentBase: "./public", 
 
\t \t // do not print bundle build stats 
 
\t \t noInfo: true, 
 
\t \t // enable HMR 
 
\t \t hot: true, 
 
\t \t // embed the webpack-dev-server runtime into the bundle 
 
\t \t inline: true, 
 
\t \t // serve index.html in place of 404 responses to allow HTML5 history 
 
\t \t historyApiFallback: true, 
 
\t \t port: PORT, 
 
\t \t host: HOST 
 
\t }, 
 
\t plugins: plugins, 
 
    eslint: { 
 
     failOnWarning: production, 
 
     failOnError: production 
 
    }, 
 
    postcss: function() { 
 
     return [autoprefixer({ browsers: ['last 2 versions'] }), cssnano]; 
 
    }, 
 
    debug: !production, 
 
    devtool: production ? false : 'cheap-module-eval-source-map' 
 
};

ご協力いただきありがとうございます。

Schecke

答えて

0

[OK]を2日後には何も変更せずに、それは突然:-)作品

だからそれだけでキャッシュの問題であるように思われました。

関連する問題