File tree Expand file tree Collapse file tree 4 files changed +48
-10
lines changed Expand file tree Collapse file tree 4 files changed +48
-10
lines changed Original file line number Diff line number Diff line change @@ -43,10 +43,13 @@ async function readSite(siteRoot) {
43
43
return site ;
44
44
}
45
45
46
- function buildSite ( buildRoot , site ) {
47
- return Promise . all ( site . files . map ( file =>
48
- writer ( buildRoot , file , site )
49
- ) ) ;
46
+ function buildSite ( buildRoot , site , filter ) {
47
+ return Promise . all ( site . files
48
+ . filter ( file =>
49
+ ! filter ||
50
+ ( filter . test ? filter . test ( file . absPath ) : filter === file . absPath ) )
51
+ . map ( file => writer ( buildRoot , file , site ) )
52
+ ) ;
50
53
}
51
54
52
55
Original file line number Diff line number Diff line change @@ -24,10 +24,10 @@ var buildDir = process.env.npm_package_site_build || './_build';
24
24
var SITE_ROOT = path . resolve ( pwd , sourceDir ) ;
25
25
var BUILD_ROOT = path . resolve ( pwd , buildDir ) ;
26
26
27
- async function build ( ) {
27
+ async function build ( filter ) {
28
28
console . log ( 'building...' ) ;
29
29
var site = await Site . readSite ( SITE_ROOT ) ;
30
- await Site . buildSite ( BUILD_ROOT , site ) ;
30
+ await Site . buildSite ( BUILD_ROOT , site , filter ) ;
31
31
console . log ( 'built' ) ;
32
32
}
33
33
Original file line number Diff line number Diff line change @@ -51,14 +51,48 @@ function startWatch() {
51
51
console . log ( 'watching...' ) ;
52
52
}
53
53
54
+ function changeFile ( fileName ) {
55
+ enqueue ( fileName ) ;
56
+ }
57
+
54
58
function deleteFile ( fileName ) {
55
- clearCache ( fileName ) ;
56
- build ( ) . catch ( error => console . error ( error . stack || error ) ) ;
59
+ enqueue ( fileName ) ;
57
60
}
58
61
59
- function changeFile ( fileName ) {
62
+ const queue = [ ] ;
63
+
64
+ function enqueue ( fileName ) {
65
+ queue . push ( fileName ) ;
66
+ if ( queue . length === 1 ) {
67
+ rebuild ( ) ;
68
+ } else {
69
+ console . log ( 'queue' , fileName ) ;
70
+ }
71
+ }
72
+
73
+ function rebuild ( ) {
74
+ const fileName = queue [ 0 ] ;
75
+ const filter =
76
+ / _ c o r e \/ / . test ( fileName ) ? / \. ( j s | m d ) $ / :
77
+ / \. l e s s $ / . test ( fileName ) ? / \. l e s s $ / :
78
+ fileName ? SITE_ROOT + '/' + fileName :
79
+ null ;
60
80
clearCache ( fileName ) ;
61
- build ( ) . catch ( error => console . error ( error . stack || error ) ) ;
81
+ return build ( filter ) . then (
82
+ ( ) => {
83
+ queue . shift ( ) ;
84
+ if ( queue . length ) {
85
+ return rebuild ( ) ;
86
+ }
87
+ } ,
88
+ error => {
89
+ console . error ( error . stack || error ) ;
90
+ queue . shift ( ) ;
91
+ if ( queue . length ) {
92
+ return rebuild ( ) ;
93
+ }
94
+ }
95
+ ) ;
62
96
}
63
97
64
98
function clearCache ( causeFileName ) {
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ module.exports = writer;
22
22
23
23
async function writer ( buildDir , file , site ) {
24
24
var writePath = getWritePath ( buildDir , file ) ;
25
+ console . log ( ' writing' , file . relPath ) ;
25
26
26
27
// Render Less file
27
28
if ( endsWith ( file . absPath , '.less' ) ) {
You can’t perform that action at this time.
0 commit comments