|
19 | 19 |
|
20 | 20 | ## Когда этот плагин использовать?
|
21 | 21 |
|
22 |
| -___Он не предназначен для использования в пайпах gulp потока___ |
| 22 | +___Плагин не предназначен для использования в "пайпах" gulp потока___ |
23 | 23 |
|
24 | 24 | _Если ваши плагины могут дать обратные вызовы после их работы,_
|
25 |
| -_с информацией о включенных файлах или если вы знаете, как это сделать самостоятельно - это для вас_ |
| 25 | +_с информацией о включенных файлах или если Вы знаете, как это сделать самостоятельно - это для Вас_ |
26 | 26 |
|
27 | 27 | ## Для чего этот плагин?
|
28 | 28 |
|
29 |
| -Предположим, что у вас есть что-то вроде этой файловой структуры в вашем проекте |
| 29 | +Предположим, что у Вас есть что-то вроде этой файловой структуры в Вашем проекте |
30 | 30 |
|
31 | 31 | ``` shell
|
32 | 32 | ├─┬ project-sources/
|
@@ -55,14 +55,14 @@ _с информацией о включенных файлах или если
|
55 | 55 | │ │ └── trigger-my-compilation-when-it-need-from-other-task.file
|
56 | 56 | ```
|
57 | 57 |
|
58 |
| -У вас есть 5 файлов, которые должны быть трансформированы / скомпилированы и повторно собраны, когда это ДЕЙСТВИТЕЛЬНО нужно в процесск инкрементальных сборок. И если вы меняете файлы, которые затрагивают только один или два из них, нет необходимости воссоздавать все остальные. Но как это сделать? |
| 58 | +У Вас есть 5 файлов, которые должны быть трансформированы / скомпилированы и повторно собраны, когда это ДЕЙСТВИТЕЛЬНО нужно в процессе инкрементальных сборок. И если Вы меняете файлы, которые затрагивают только один или два из них, нет необходимости воссоздавать все остальные. Но как это сделать? |
59 | 59 |
|
60 |
| -Конечно, вы можете создавать 5 или более задач с разными исходными параметрами и для каждого помещать отдельного наблюдателя (`gulp.watch ()` или какой нибудь плагин для этого), но этот подход не очень удобен в случае изменения зависимостей, отключения или включения импортов файлы и т.д. Вы должны, каждый раз, вручную переписывать свои задачи или их часть. |
| 60 | +Конечно, Вы можете создавать 5 или более задач с разными исходными параметрами и для каждого помещать отдельного наблюдателя (`gulp.watch()` или какой нибудь плагин для этого), но этот подход не очень удобен в случае изменения зависимостей, отключения или включения импортов и т.д. Вы должны, каждый раз, вручную переписывать свои задачи или их часть. |
61 | 61 |
|
62 | 62 | Еще один вариант - поставить `watch` на все файлы которые у Вас есть, чтобы не переписывать что-либо, но это в корне убивает нашу цель, которая заключается в оптимизации и ускорении процесса работы, только с теми файлами которые действительно нужны в данный момент.
|
63 | 63 |
|
64 |
| -_Наше предложение. Посмотрите на всю ситуацию под другим углом. |
65 |
| - Если что-то происходит с подключенными файлами - они должны сообщать об этом файлам, в которых они используются_ |
| 64 | +_Наше предложение. Посмотрите на всю ситуацию под другим углом. |
| 65 | + Если что-то происходит с подключенными файлами - они должны сообщать об этом файлам, в которых они используются!_ |
66 | 66 |
|
67 | 67 | __Пример__
|
68 | 68 |
|
@@ -99,34 +99,33 @@ const wnt2 = watchAndTouch(gulp);
|
99 | 99 | // about the included files there
|
100 | 100 | import renderPlugin from 'some-gulp-plugin';
|
101 | 101 |
|
102 |
| - |
103 | 102 | export function renderTask1 () {
|
104 |
| - return gulp.src('sources-1/*.file') // yes that's all source you need )) |
105 |
| - .pipe(renderPlugin({ |
106 |
| - option1: 'value1', |
107 |
| - option2: 'value2', |
108 |
| - afterRenderCallback: function(file, result, stats) { |
109 |
| - let includedSources = stats.includedFiles; |
110 |
| - let pathToCurrentFile = file.path; |
111 |
| - let uniqFileKey = pathToCurrentFile.replace(/\\|\/|\.|\s|/g, '_'); |
112 |
| - |
113 |
| - let isChanged = wnt1(uniqFileKey, pathToCurrentFile, includedSources); |
114 |
| - if (isChanged) { // an example |
115 |
| - console.log( `${ file.relative } change dependencies:\n${ includedSources.join('\n') }` ); |
116 |
| - } |
117 |
| - } |
118 |
| - })) |
| 103 | + return gulp.src('sources-1/*.file') // yes that's all source you need )) |
| 104 | + .pipe(renderPlugin({ |
| 105 | + option1: 'value1', |
| 106 | + option2: 'value2', |
| 107 | + afterRenderCallback: function(file, result, stats) { |
| 108 | + let includedSources = stats.includedFiles; |
| 109 | + let pathToCurrentFile = file.path; |
| 110 | + let uniqFileKey = pathToCurrentFile.replace(/\\|\/|\.|\s|/g, '_'); |
| 111 | + |
| 112 | + let isChanged = wnt1(uniqFileKey, pathToCurrentFile, includedSources); |
| 113 | + if (isChanged) { // an example |
| 114 | + console.log( `${ file.relative } change dependencies:\n${ includedSources.join('\n') }` ); |
| 115 | + } |
| 116 | + } |
| 117 | + })) |
119 | 118 | }
|
120 | 119 |
|
121 | 120 | // or
|
122 | 121 | // ==============
|
123 | 122 |
|
124 | 123 | const analyseFn = () => {
|
125 |
| - // some actions that you know how to write |
126 |
| - // for analyse your files for getting information |
127 |
| - // about the included files there |
128 |
| - // on done call |
129 |
| - wnt2(uniqueKey, touchSrc, watchingSrc); |
| 124 | + // some actions that you know how to write |
| 125 | + // for analyse your files for getting information |
| 126 | + // about the included files there |
| 127 | + // on done call |
| 128 | + wnt2(uniqueKey, touchSrc, watchingSrc); |
130 | 129 | };
|
131 | 130 |
|
132 | 131 | ```
|
|
0 commit comments