UNPKG

magicpatch

Version:

Adds IPython / Jupyter magic commands to IJavascript

162 lines (137 loc) 3.64 kB
/* eslint-disable jsdoc/require-jsdoc */ /* istanbul ignore file */ const {watch, src, /* dest, series,*/ parallel} = require("gulp"); const mocha = require("gulp-mocha"); const eslint = require("gulp-eslint7"); // const jsdoc = require("gulp-jsdoc3"); // const nodemon = require("gulp-nodemon"); // const istanbul = require("gulp-istanbul"); // gulp-istanbul is broken; hasn't been updated in 3 years let {spawn} = require("child_process"); const browserSync = require("browser-sync").create(); const sources = ["lib/*.js", "index.js"]; const tests = ["test/*.js"]; const helpers = ["test/helpers/*.js"]; const support = ["gulpfile.js", "package.json", ".eslintrc.js"]; const js = [... sources, ... tests, ... helpers]; // const css = ["./jsdoc.css"]; // const markdown = ["**/*.md"]; // const documentation = [... sources, ... markdown, ... css]; const all = [... js, ... support]; // const jsDocConfig = require("./.jsdoc-conf.json"); /* ************ * TESTING **************/ function test(testReporter = "spec") { return src(tests) .pipe(mocha({ reporter: testReporter, exit: true, })); } function testQuiet() { return test.bind(null, "min")(); } function watchTest() { return watch(all, test.bind(null, "min")); } /* ************ * LINT **************/ function lintBasic() { return src(js) .pipe(eslint({quiet: true})) .pipe(eslint.format()); } function lint() { return lintBasic() .pipe(eslint.failAfterError()); } function watchLint() { return watch(all, function() { return lintBasic(); }); } /* ************ * COVERAGE **************/ function runIstanbul(done) { let cmd = "nyc"; let args = [ "--reporter=text", "--reporter=html", "--reporter=lcov", "mocha", ]; let opts = { stdio: "inherit", }; spawn(cmd, args, opts).on("close", done); } const coverage = runIstanbul; function coverageRefresh() { return watch(js, runIstanbul); } function coverageBrowserSync() { browserSync.init({ server: { baseDir: "./coverage", }, }); watch("coverage/*").on("change", browserSync.reload); watch("coverage/*").on("add", browserSync.reload); } const watchCoverage = parallel(coverageBrowserSync, coverageRefresh); /* ************ * DOCS **************/ // function docsBuild(done) { // src(documentation, {read: false}) // .pipe(jsdoc(jsDocConfig, done)); // } // const docs = series(docsBuild, copyCss); // function copyCss() { // return src("jsdoc.css") // .pipe(dest("./docs")); // } // function docsBrowserSync() { // browserSync.init({ // server: { // baseDir: "./docs", // }, // }); // watch("docs/*").on("change", browserSync.reload); // watch("docs/*").on("add", browserSync.reload); // } // function docsRefresh() { // watch(css, copyCss); // watch(documentation, docsBuild); // } // const watchDocs = parallel(docsBrowserSync, docsRefresh); /* ************ * RELEASE **************/ const ready = parallel(test, audit, lint, coverage /* docs */); function audit(done) { let cmd = "npm"; let args = [ "audit", ]; let opts = { stdio: "inherit", }; let aud = spawn(cmd, args, opts).on("close", done); } module.exports = { audit, test, "test:quiet": testQuiet, lint, coverage, // docs, ready, "default": watchTest, "dev:test": watchTest, "dev:lint": watchLint, "dev:coverage": watchCoverage, // "dev:docs": watchDocs, };