# @das.laboratory/gulp-plugin-interactive

> This package will install Gulp and related packages in your workspace.

Latest version **4.0.5** (published 2026-07-02) · UNLICENSED license · 0 weekly downloads

## Install

```sh
npm install @das.laboratory/gulp-plugin-interactive
pnpm add @das.laboratory/gulp-plugin-interactive
yarn add @das.laboratory/gulp-plugin-interactive
bun add @das.laboratory/gulp-plugin-interactive
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.0.5 |
| Published | 2026-07-02 |
| First published | 2020-09-01 |
| Weekly downloads | 0 |
| License | UNLICENSED |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 60 |
| Unpacked size | 2.7 MB |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| Author | Nicolas Reibnitz |
| Maintainers | nreibnitz |

## Links

- npm: https://www.npmjs.com/package/@das.laboratory/gulp-plugin-interactive
- Repository: https://bitbucket.org/simpleshow_interactive/gulp-plugin-interactive-neo
- Homepage: https://bitbucket.org/simpleshow_interactive/gulp-plugin-interactive-neo#readme
- Issues: https://bitbucket.org/simpleshow_interactive/gulp-plugin-interactive-neo/issues
- npm.io page: https://npm.io/package/@das.laboratory/gulp-plugin-interactive

## Dependencies (60)

- [del](https://npm.io/package/del.md) ^5
- [gulp](https://npm.io/package/gulp.md) ^5
- [sass](https://npm.io/package/sass.md) ^1.43.4
- [slug](https://npm.io/package/slug.md) ^5
- [boxen](https://npm.io/package/boxen.md) ^7.1.1
- [chalk](https://npm.io/package/chalk.md) ^4.1.2
- [charm](https://npm.io/package/charm.md) ^1
- [debug](https://npm.io/package/debug.md) ^2
- [chmodr](https://npm.io/package/chmodr.md) ^1
- [cli-ux](https://npm.io/package/cli-ux.md) ^6.0.9
- [rsync2](https://npm.io/package/rsync2.md) ^2.0.2
- [core-js](https://npm.io/package/core-js.md) ^3.36.0
- [archiver](https://npm.io/package/archiver.md) ^7.0.1
- [enquirer](https://npm.io/package/enquirer.md) ^2
- [inquirer](https://npm.io/package/inquirer.md) ^7
- [lazypipe](https://npm.io/package/lazypipe.md) ^1
- [node-ssh](https://npm.io/package/node-ssh.md) ^13.1.0
- [cli-table](https://npm.io/package/cli-table.md) ^0
- [env-paths](https://npm.io/package/env-paths.md) ^3.0.0
- [gulp-sass](https://npm.io/package/gulp-sass.md) ^6.0.1
- [browserify](https://npm.io/package/browserify.md) ^17.0.0
- [clipboardy](https://npm.io/package/clipboardy.md) ^3.0.0
- [gulp-babel](https://npm.io/package/gulp-babel.md) ^8
- [gulp-debug](https://npm.io/package/gulp-debug.md) ^4.0.0
- [handlebars](https://npm.io/package/handlebars.md) ^4
- [node-emoji](https://npm.io/package/node-emoji.md) ^2.1.3
- [ansi-colors](https://npm.io/package/ansi-colors.md) ^4
- [extract-zip](https://npm.io/package/extract-zip.md) ^2
- [glob-expand](https://npm.io/package/glob-expand.md) ^0
- [gulp-header](https://npm.io/package/gulp-header.md) ^2
- [gulp-ignore](https://npm.io/package/gulp-ignore.md) ^3.0.0
- [gulp-rename](https://npm.io/package/gulp-rename.md) ^2.0.0
- [gulp-useref](https://npm.io/package/gulp-useref.md) ^4
- [tty-strings](https://npm.io/package/tty-strings.md) ^1
- [ansi-escapes](https://npm.io/package/ansi-escapes.md) ^6.2.0
- [cli-progress](https://npm.io/package/cli-progress.md) ^3
- [gulp-plumber](https://npm.io/package/gulp-plumber.md) ^1.2.1
- [gulp-replace](https://npm.io/package/gulp-replace.md) ^1.1.3
- [gulp-rev-all](https://npm.io/package/gulp-rev-all.md) ^2
- [lodash.merge](https://npm.io/package/lodash.merge.md) ^4
- [vinyl-buffer](https://npm.io/package/vinyl-buffer.md) ^1
- [date-and-time](https://npm.io/package/date-and-time.md) ^3.1.1
- [find-in-files](https://npm.io/package/find-in-files.md) ^0
- [terminal-link](https://npm.io/package/terminal-link.md) ^2
- [@rollup/stream](https://npm.io/package/@rollup/stream.md) ^3.0.1
- [gulp-clean-css](https://npm.io/package/gulp-clean-css.md) ^4
- [gulp-terser-js](https://npm.io/package/gulp-terser-js.md) ^5
- [gradient-string](https://npm.io/package/gradient-string.md) ^1
- [gulp-sourcemaps](https://npm.io/package/gulp-sourcemaps.md) ^3
- [replace-in-file](https://npm.io/package/replace-in-file.md) ^7.0.2
- [update-notifier](https://npm.io/package/update-notifier.md) ^7.0.0
- [gulp-rev-rewrite](https://npm.io/package/gulp-rev-rewrite.md) ^3
- [ssh2-sftp-client](https://npm.io/package/ssh2-sftp-client.md) ^7
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) ^7
- [gulp-autoprefixer](https://npm.io/package/gulp-autoprefixer.md) ^7
- [gulp-url-prefixer](https://npm.io/package/gulp-url-prefixer.md) ^1
- [vinyl-source-stream](https://npm.io/package/vinyl-source-stream.md) ^2
- [ansi-escape-sequences](https://npm.io/package/ansi-escape-sequences.md) ^5
- [gulp-rev-delete-original](https://npm.io/package/gulp-rev-delete-original.md) ^0
- [rollup-plugin-node-externals](https://npm.io/package/rollup-plugin-node-externals.md) ^7.0.1

## Recent versions

- 4.0.5 (latest) — 2026-07-02
- 4.0.4 — 2026-07-02
- 4.0.3 — 2026-07-02
- 4.0.2 — 2026-07-02
- 3.3.0 — 2025-06-02
- 3.2.6 — 2025-04-23
- 3.2.5 — 2025-04-22
- 3.2.4 — 2025-04-22
- 3.2.3 — 2025-04-21
- 3.2.2 — 2025-04-21
- 3.2.1 — 2025-04-21
- 3.2.0 — 2025-04-21
- 3.1.2 — 2024-03-18
- 3.1.1 — 2024-03-16
- 3.1.0 — 2024-03-16
- … 29 more at https://npm.io/package/@das.laboratory/gulp-plugin-interactive/versions

## README

![Big-Gulp-Logo](https://simpleshowinteractive.com/_images/_do-not-delete/biggulp-logo-header.png)

# gulp-plugin-interactive

BigGulp makes building interactive projects, SCORM packages, uploading and live-link generation a lot easier.

The following commands are available to you through [@das.laboratory/gulp-plugin-interactive](https://www.npmjs.com/package/@das.laboratory/gulp-plugin-interactive) on npm.

#### Available commands

Note: you can always list the available tasks by running `gulp --tasks`.

The following table lists all available commands (tasks) you can run with `gulp <command>` and the submodules it runs behind the scenes:

| Command   | Runs these submodules:                                                                                  |
| --------- | ------------------------------------------------------------------------------------------------------- |
| buildOnly | start, setFilePermissions, copyAll, compileSASS, joinUserefBlocks, doNotRevAllFiles, scormify, zipSCORM |
| build     | buildOnly + commitProject, upload, makelive                                                             |
| putOnline | zipSCORM, upload, makelive                                                                              |
| makelive  | makelive                                                                                                |
| upload    | upload                                                                                                  |
| setup     | setup                                                                                                   |
| zip       | zipSCORM                                                                                                |

_I left out submodules that don't contribute to the actual output, like cleaning up temp files or show terminal messages, etc._

#### Descriptions

Here is a description of what each of these submodules does:

| Module             | Description                                                                                                                                                                                                                            |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| start              | sets up the project (checks for interactive.json file and asks for info if not available, etc.)                                                                                                                                        |
| setFilePermissions | sets file permissions of 755 to all files in ./src                                                                                                                                                                                     |
| copyAll            | copies all files from ./src to ./tmp folder (except .scss, .css, .js, .md, .map, package.json, LICENSE files)                                                                                                                          |
| compileSASS        | compiles all .scss files in ./src/css and its subfolders and saves resulting .css file(s) to ./src/css                                                                                                                                 |
| joinUserefBlocks   | joins all files marked in index.html with `build:css` and `build:js` comments (if the current file happens to be `interactive.min.js` it will run it through babel and add 'INTERACTIVE BUILD ON...' message) and puts them into ./tmp |
| doNotRevAllFiles   | shortcut to avoid 'revAllFiles' (which doesn't quite work yet but would add checksums to the name of the files, making cache problems a thing of the past) and instead simply copies all files from ./tmp to ./build                   |
| scormify           | uses handlebars.js to make SCORM manifest file with list of files in ./build folder and adds schema files (removing old ones from ./build without asking)                                                                              |
| zipSCORM           | zips the build folder and names the archive according to the data in interactive.json file                                                                                                                                             |
| commitProject      | checks the local repository and if uncommitted files are found will commit them for you                                                                                                                                                |
| upload             | uploads the zipfile into a folder on the server that's named according to the project info found in interactive.json                                                                                                                   |
| makelive           | runs a script on the server that unzips the project, turns off SCORM and video-seeking on and returns a live-link URL                                                                                                                  |
| setup              | asks for details about the project that are used for building the final package                                                                                                                                                        |

## Modules

#### Modules actually used by the tasks

As we can see, not many modules actually use gulp. Time to say goodbye to gulp?

| Files                                | Type   | Gulp | Description                   |
| :----------------------------------- | :----- | :--- | :---------------------------- |
| ./index.js                           | MAIN   | yes  | gulpfile.js                   |
| ./modules/all.js                     | MODULE | yes  | does the main building job    |
| ./modules/cli-style.js               | MODULE |      | helpers for CLI stuff         |
| ./modules/css.js                     | MODULE | yes  | transpile SCSS/CSS            |
| ./modules/git-commit.js              | MODULE |      | commit project                |
| ./modules/interactive-data-parser.js | MODULE |      | parse interactive.json        |
| ./modules/makelive.js                | MODULE |      | run makelive on server        |
| ./modules/scormify.js                | MODULE |      | add SCORM templates to output |
| ./modules/setup.js                   | MODULE |      | setup project                 |
| ./modules/upload.js                  | MODULE |      | upload project to server      |
| ./modules/utils.js                   | MODULE |      | helpers for CLI stuff         |
| ./modules/wait-for-it.js             | MODULE |      | add delay between tasks       |
| ./modules/data/languages.js          | DATA   |      | language options for setup    |
| ./modules/data/output-options.js     | DATA   |      | output options for setup      |

#### Modules not used by the tasks or experimental stuff

| Files                          | Type   | Gulp | Description                           |
| :----------------------------- | :----- | :--- | :------------------------------------ |
| ./modules/chmod.js             | MODULE |      | set files permissions                 |
| ./modules/js.js                | MODULE | yes  | insert date into built interactive.js |
| ./modules/prefixer.js          | MODULE | yes  | prefix urls                           |
| ./modules/quality-assurance.js | MODULE |      | test project for potential problems   |
| ./modules/server.js            | MODULE | yes  | watch/serve/reload project            |

## Notes on converting to ESM

#### Interesting articles:

-   [Invoking the Gulp tool programmatically](https://github.com/gulpjs/gulp/issues/770#issuecomment-259274679)
-   [How to build a TypeScript library with Vite](https://rbardini.com/how-to-build-ts-library-with-vite/)

#### Running gulp programmatically from node script

A proof of concept can be found in `./vite-library-test`. It works just fine!

But this is the gist of it:

**gulpfile.js:**

```js
import gulp from 'gulp';

export const two = () => Promise.resolve(11);
export const one = gulp.series(two, () => Promise.resolve(5));
```

**index.js:**

```js
import { one, two } from './gulpfile.js';

const resultOne = one();
const resultTwo = two();

console.log('result one: ', resultOne); // result one:  undefined
console.log('result two: ', resultTwo); // result two:  Promise { 11 }
```

**Note:** `resultOne` is undefined because `one()` is a gulp series.

This [comment](https://github.com/gulpjs/gulp/issues/770#issuecomment-259293236) explains it:

"series and parallel don't return results because they have nothing to return. When invoking, you pass a callback function that passes the errors and results.

```js
prelim(function (err, results) {
	console.log(err, results);
});
```

Btw, all of this is documented in the dependencies (https://github.com/gulpjs/bach in this case) but haven't been surfaced to the 4.0 docs yet (always looking for people to help!)"

---
_Source: https://npm.io/package/@das.laboratory/gulp-plugin-interactive · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
