運行任務考慮以下Gruntfile.js
用於監視的文件
module.exports = function(grunt) {
var
stylusFiles = [
{
expand: true,
cwd: 'radio/static/css/',
src: ['*.styl'],
ext: ['.css']
},
{
expand: true,
cwd: 'radio/static/polymer/radio-light/',
src: ['**/*.styl'],
ext: ['.css']
},
{
expand: true,
cwd: 'radio/static/themes/',
src: ['**/*.styl'],
ext: ['.css']
}
];
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
stylus: {
all: {
files: stylusFiles,
},
},
watch: {
files: [
'radio/static/css/*.styl',
'radio/static/themes/**/*.styl',
'radio/static/polymer/radio-light/**/*.styl',
],
tasks: ['stylus:all'],
}
});
// Other stuff
};
手寫任務編譯指定文件夾中找到的每個.styl文件。 現在觀看導致重新編譯所有.styl文件的任務,並且我只想重新編譯僅監視的文件。
我已閱讀了一些關於watch.event的內容,但我無法理解如何使用監視的路徑名運行默認任務(例如stylus:single
)。
換句話說,有沒有一種方法來實現手寫筆子任務,它可以通過grunt.task.run()
與自定義文件選項運行?
已更新:解決方案在我自己的答案中。
該解決方案導致重新編譯所有文件,匹配每個模式,例如,如果只有一個文件在靜態文件中發生改變,這將使得手寫筆重新編譯每個文件匹配的靜態文件模式。 –
這並不壞,因爲我會在生產環境中對所有css文件進行連接,這意味着我的所有.STYL文件最終只會被編譯爲一個CSS文件。但是在開發過程中,我希望有單獨的CSS文件(因爲它們中有些是Polymer Elements的一部分),所以我有另一種解決方案,它在特定情況下更適合,但在生產中無用。我會在幾分鐘內更新我的問題。 –