Skip to content

Commit 58d40dd

Browse files
committed
super asset copy / watch WIP, but getting closer
API change to put clean inside options, coinciding with watch stubbed in serve
1 parent ec3abdc commit 58d40dd

File tree

5 files changed

+1136
-18
lines changed

5 files changed

+1136
-18
lines changed

core/lib/asset_copy.js

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,18 @@ const asset_copier = () => {
4141
dest,
4242
options
4343
).on(copy.events.COPY_FILE_COMPLETE, (copyOperation) => {
44-
console.log(`Moved ${p} to ${dest}`);
44+
if (options.debug) {
45+
console.log(`Moved ${p} to ${dest}`);
46+
}
47+
options.emitter.emit('patternlab-file-change', {
48+
file: p,
49+
dest: dest
50+
});
4551
});
4652
};
4753

4854
const asset_copy = (assetDirectories, patternlab, options) => {
55+
4956
//take our configured paths and sanitize best we can to only the assets
5057
const dirs = transform_paths(assetDirectories);
5158

@@ -54,24 +61,26 @@ const asset_copier = () => {
5461

5562
const copyOptions =
5663
{
57-
overwrite: true
64+
overwrite: true,
65+
emitter: patternlab.events,
66+
debug: patternlab.config.debug
5867
};
5968

60-
console.log(60, dirs)
61-
6269
//loop through each directory asset object (source / public pairing)
6370
_.each(dirs, (dir, key) => {
6471

6572
//if we want to watch files, do so, otherwise just copy each file
6673
if (options.watch) {
67-
console.log(49, `watching ${path.resolve(basePath, dir.source)}`);
74+
if (patternlab.config.debug) {
75+
console.log(`Pattern Lab is watching ${path.resolve(basePath, dir.source)} for changes`);
76+
}
6877
const watcher = chokidar.watch(
6978
path.resolve(basePath, dir.source),
7079
{
7180
ignored: /(^|[\/\\])\../,
7281
ignoreInitial: true,
7382
awaitWriteFinish : {
74-
stabilityThreshold: 1000,
83+
stabilityThreshold: 200,
7584
pollInterval: 100
7685
}
7786
}
@@ -95,6 +104,15 @@ const asset_copier = () => {
95104
copyFile(dir.source, destination, copyOptions);
96105
}
97106
});
107+
108+
109+
//we need to special case patterns/**/*.md|.json|.pattern-extensions
110+
if (options.watch) {
111+
console.log(111, basePath, assetDirectories.source.patterns)
112+
const patterns = patternlab.engines.getSupportedFileExtensions().map(dotExtension => path.join(basePath, assetDirectories.source.patterns, `/**/*${dotExtension}`));
113+
console.log(112, patterns);
114+
}
115+
98116
};
99117

100118
return {

core/lib/patternlab.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ let fs = require('fs-extra'); // eslint-disable-line
3636
let ui_builder = require('./ui_builder'); // eslint-disable-line
3737
let pattern_exporter = new pe(); // eslint-disable-line
3838
let assetCopier = require('./asset_copy'); // eslint-disable-line
39+
let serve = require('./serve'); // eslint-disable-line
3940

4041
const pattern_assembler = new pa();
4142
const lineage_hunter = new lh();
@@ -661,15 +662,15 @@ const patternlab_engine = function (config) {
661662
v: function () {
662663
return getVersion();
663664
},
664-
build: function (callback, deletePatternDir, options) {
665+
build: function (callback, options) {
665666
if (patternlab && patternlab.isBusy) {
666667
console.log('Pattern Lab is busy building a previous run - returning early.');
667668
return Promise.resolve();
668669
}
669670
patternlab.isBusy = true;
670-
return buildPatterns(deletePatternDir).then(() => {
671+
return buildPatterns(options.cleanPublic).then(() => {
671672
new ui_builder().buildFrontend(patternlab);
672-
assetCopier().copyAssets(patternlab.config.paths, patternlab, {watch: false});
673+
assetCopier().copyAssets(patternlab.config.paths, patternlab, options);
673674
printDebug();
674675
patternlab.isBusy = false;
675676
callback();
@@ -701,7 +702,14 @@ const patternlab_engine = function (config) {
701702
},
702703
getSupportedTemplateExtensions: function () {
703704
return getSupportedTemplateExtensions();
704-
}
705+
},
706+
serve: function (options) {
707+
options.watch = true;
708+
return this.build(() => {}, options).then(function () {
709+
serve(patternlab);
710+
});
711+
},
712+
events: patternlab.events
705713
};
706714
};
707715

core/lib/serve.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
const plutils = require('./utilities');
3+
const path = require('path');
4+
const process = require('process');
5+
const assetCopier = require('./asset_copy');
6+
7+
let copy = require('recursive-copy'); // eslint-disable-line
8+
let chokidar = require('chokidar'); // eslint-disable-line
9+
10+
const serve = (patternlab) => {
11+
console.log('serve');
12+
};
13+
14+
module.exports = serve;

0 commit comments

Comments
 (0)