3

Web プロジェクトをセットアップしていて、grunt を自動化とワークフローに使用したいと考えています。sass、jshint、jsdocs、ミニファイアーはすべてうまく機能していますが、うなり声シェルからのブラウザーの起動とリロードに問題はありません。

私がこれを行う際に満たしたい2つの条件があります。

ブラウザのプラグインはありません。(レポから直接動作させたい。「npm install」、「grunt」)npmモジュールを最小限に抑えます。(理想的には grunt-contrib-watch と grunt-contrib-connect のみ)

これは、これら 2 の私の構成です。

connect: {
    options: {
        base: 'app/',
        port: '8888',
        livereload: true
    }
},

watch: {
    all: {
        files: [
            'gruntfile.js',
            'app/index.html',
            'app/partials/*.html',
            'app/styles/sass/*.scss',
            'app/scripts/*.js'
        ],
        tasks: ['default'],
        options: {
            livereload: true
        }
    }
}

テストでは、次のことも試しました。

connect: {
    options: {
        base: "app/",
        port: 8888,
        open: {
            target: 'app/index.html'
        }
    }
}

Watch はいつファイルが変更されたかを教えてくれますが、デフォルトのタスク (またはそれが作成されたサブタスクのいずれか) を実行してもブラウザー/ページが起動せず、リロードがないようです。

私は grunt-open である程度成功しましたが、バージョン 0.6.0 以降の grunt-contrib-watch だけで達成できるはずだと思いますか?

----- 追加 grunt-contrib-connect が実行されているかどうかもわかりません...

grunt.registerTask('serve',   ['sass', 'connect', 'watch']);
grunt.registerTask('default', ['jshint', 'serve']);

結果は次のようになります。接続のタイミングが表示されません。タスクが並行して実行されているため、タスクが測定されていないと推測していますが、これは何が起こっているのでしょうか?

Execution Time 
loading tasks  12ms  ▇▇▇▇▇ 10%
jshint:src     78ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 62%
sass:all       11ms  ▇▇▇▇▇ 9%
watch          24ms  ▇▇▇▇▇▇▇▇▇ 19%
Total 126ms
4

1 に答える 1

1

まあ、これがそれであるかどうかはわかりませんが、あなたの更新ではconnect、ターゲットが指定されていないため、実行されないことがわかります:

connect: {
    server: {  // try adding this block
        options: {
            base: 'app/',
            port: '8888',
            livereload: true
        }
    }
},

それ以外の場合、これはほとんど正しいように見えますが、ライブ リロードするポートを明示的に指定することもできます。

watch: {
    all: {
        files: [
            // ...
        ],
        tasks: ['default'],
        options: {
            livereload: 8888  // changed...
        }
    }
}
于 2014-12-16T14:03:06.577 に答える