0

grunt-contrib-less と grunt-contrib-watch を使用して、変更時にlessファイルを自動的にコンパイルします。css が存在しない場合、grunt は正常にコンパイルします。css が既に存在し、watch がファイルの変更が少ないことを確認した場合、css ファイルは変更されません。私は毎回それを削除し、うなり声に変更を加えて再作成させる必要があります。

少ない設定:

less: {
    options: {
        banner: '<%= meta.banner %>'
    },
    dev: {
        options: {
            sourceMap: true,
            sourceMapFileInline: true,
            compress: true
        },
        src: '<%= meta.dev.less %>/main.less',
        dest: '<%= meta.prod.css %>/main.css'
    },
    prod: {
        options: {
            plugins: [
                new( require( 'less-plugin-clean-css' ) )( {
                    'advanced': true,
                    'compatibility': 'ie9'
                } )
            ],
        },
        src: '<%= meta.dev.less %>/main.less',
        dest: '<%= meta.prod.css %>/main.css'
    }
},

私は Windows 10 を使用しており、すべてのユーザーが dist フォルダー内のファイルを変更/削除する権利を持っています。grunt に css ファイルを変更させるにはどうすればよいですか?

編集

ウォッチ構成

watch: {
    options: {
        livereload: 6325
    },
    js: {
        files: [ '<%= meta.dev.js %>/main.js', '<%= meta.dev.js %>/plugins/*.js' ],
        tasks: [ 'newer:concat' ]
    },
    images: {
        files: '<%= meta.dev.img %>/**/*.{png,jpg,gif,svg}',
        tasks: [ 'newer:imagemin' ]
    },
    css: {
        files: '<%= meta.dev.less %>/**/*.less',
        tasks: [ 'newer:less:dev' ]
    }
}

登録

grunt.registerTask( 'default', [ 'less:dev', 'concat', 'imagemin', 'copy', 'watch' ] );

Grunt 出力 (詳細)

>> File "dev\less\elements\menu.less" changed.
Initializing
Command-line options: --verbose

Reading "Gruntfile.js" Gruntfile...OK

Registering Gruntfile tasks.
Reading package.json...OK
Parsing package.json...OK
Initializing config...OK
Loading "Gruntfile.js" tasks...OK
+ default, prod

Running tasks: newer:less:dev

Loading "grunt-newer" plugin

Registering "D:\[...]\static\node_modules\grunt-newer\tasks" tasks.
Loading "newer.js" tasks...OK
+ any-newer, newer, newer-clean, newer-postrun

Running "newer:less:dev" (newer) task
Options: cache="D:\\[...]\\static\\node_modules\\grunt-newer\\.cache", override=undefined
Files: dev/less/main.less -> dist/css/main.css
No newer files to process.
4

2 に答える 2

2

何が起こるかは次のとおりです。

  • あなたが変更しますmenu.less
  • 時計はそれを検出して実行しますnewer:less:dev
  • less:devファイルmain.lessを唯一のソースとして使用する (ではないmenu.less)
  • そのファイルは変更されていないためnewer、タスクを再度実行する必要はないと結論付けます

main.lessが含まれていると思いますがmenu.lessnewerわかりません。したがって、私の提案する修正は、部品を取り除くことnewerです。

于 2015-11-03T20:22:44.763 に答える
0

less の正しいウォッチ構成を追加しましたか?

 watch: {
  less: {
    files: ['less/**/*.less'], // which files to watch
    tasks: ['less'],
    options: {
      nospawn: true
    }
  }
}

プロファイルで grunt を実行するには: grunt.registerTask('myprofile', ['less:dev', 'watch']);

于 2015-11-02T16:56:54.483 に答える