diff options
| author | David T. Sadler <davidtsadler@googlemail.com> | 2020-02-17 19:59:15 +0000 |
|---|---|---|
| committer | David T. Sadler <davidtsadler@googlemail.com> | 2020-02-17 19:59:15 +0000 |
| commit | 498913806182905cc0c14bd12a61f9af26fa16b4 (patch) | |
| tree | 0c36a6df72900c184e900b274bad14aa5114fc5d /tasks | |
| parent | 12b052b1f480c5a95acd1477e28ce76f84ff7932 (diff) | |
Switch over to Jigsaw
Diffstat (limited to 'tasks')
| -rw-r--r-- | tasks/bin.js | 19 | ||||
| -rw-r--r-- | tasks/build.js | 48 |
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'); + }, + }) + }, +}; |
