summaryrefslogtreecommitdiff
path: root/tasks
diff options
context:
space:
mode:
authorDavid T. Sadler <davidtsadler@googlemail.com>2020-02-17 19:59:15 +0000
committerDavid T. Sadler <davidtsadler@googlemail.com>2020-02-17 19:59:15 +0000
commit498913806182905cc0c14bd12a61f9af26fa16b4 (patch)
tree0c36a6df72900c184e900b274bad14aa5114fc5d /tasks
parent12b052b1f480c5a95acd1477e28ce76f84ff7932 (diff)
Switch over to Jigsaw
Diffstat (limited to 'tasks')
-rw-r--r--tasks/bin.js19
-rw-r--r--tasks/build.js48
2 files changed, 67 insertions, 0 deletions
diff --git a/tasks/bin.js b/tasks/bin.js
new file mode 100644
index 0000000..32fcbea
--- /dev/null
+++ b/tasks/bin.js
@@ -0,0 +1,19 @@
+var hasbin = require('hasbin');
+var fs = require('fs');
+var path = require('path');
+
+module.exports = {
+ path: function() {
+ if (fs.existsSync('./vendor/bin/jigsaw')) {
+ return path.normalize('./vendor/bin/jigsaw')
+ }
+
+ if (hasbin.sync('jigsaw')) {
+ return 'jigsaw';
+ }
+
+ console.log('Could not find Jigsaw; please install it via Composer, either locally or globally.');
+
+ process.exit();
+ }
+};
diff --git a/tasks/build.js b/tasks/build.js
new file mode 100644
index 0000000..836960d
--- /dev/null
+++ b/tasks/build.js
@@ -0,0 +1,48 @@
+let argv = require('yargs').argv;
+let bin = require('./bin');
+let command = require('node-cmd');
+
+let BrowserSync = require('browser-sync');
+let BrowserSyncPlugin = require('browser-sync-webpack-plugin');
+let ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin');
+
+let browserSyncInstance;
+let env = argv.e || argv.env || 'local';
+let port = argv.p || argv.port || 3000;
+
+module.exports = {
+ jigsaw: {
+ apply(compiler) {
+ compiler.hooks.done.tap('DonePlugin', (compilation) => {
+ command.get(bin.path() + ' build -q ' + env, (error, stdout, stderr) => {
+ console.log(error ? stderr : stdout);
+
+ if (browserSyncInstance) {
+ browserSyncInstance.reload();
+ }
+ });
+ });
+ }
+ },
+
+ watch: function (paths) {
+ return new ExtraWatchWebpackPlugin({
+ files: paths,
+ });
+ },
+
+ browserSync: function (proxy) {
+ return new BrowserSyncPlugin({
+ notify: false,
+ port: port,
+ proxy: proxy,
+ server: proxy ? null : { baseDir: 'build_' + env + '/' },
+ },
+ {
+ reload: false,
+ callback: function() {
+ browserSyncInstance = BrowserSync.get('bs-webpack-plugin');
+ },
+ })
+ },
+};