Home

Awesome

Build DEB Packages with Gulp

Note: This plugin is not ready to use in production

Deb archives is a great way for distribute your software package

Basic Usage

Install plugin:

npm install --saveDev gulp-deb

Then you can use it in your gulpfile

var gulp = require('gulp');
var deb = require('gulp-deb');

gulp.task('build', function () {

  return gulp
    .src([
      'src/**',
      'node_modules/**',
      '!**/.git/**'
    ], { base: process.cwd() })
    .pipe(deb('example.deb', {
      name: 'example',
      version: '1',
      maintainer: {
        name: 'John Doe',
        email: 'john.doe@example.org'
      },
      architecture: 'all',     // Optional. String. Architecture
      installedSize: 1024,     // Optional. Integer. Installed-Size, KiB.
      preDepends: [
        'dpkg (>= 1.15.6)'
      ],                       // Optional. Array or String. Pre-Depends
      depends: [ 
        'libc6 (>= 2.1)' 
      ],                       // Optional. Array or String. Depends
      recommends: null,        // Optional. Array or String. Recommends
      suggests: null,          // Optional. Array or String. Suggests
      enhances: null,          // Optional. Array or String. Enhances
      section: 'devel',        // Optional. String. Section
      priority: 'optional',    // Optional. String. Priority
      homepage: 'example.org', // Optional. String. Homepage
      short_description: 'some short description',
      long_description: 'some long description'
    }))
    .pipe(gulp.dest('builds/'));
});

More information about package control files here.

Debian preinst, postinst, prerm, and postrm script

These files are executable scripts which are automatically run before or after a package is installed. Read more here.

var gulp = require('gulp');
var deb = require('gulp-deb');
var fs = require("fs");

gulp.task('build', function () {

  var preinstContent = fs.readFileSync("scripts/preinst", "utf8");
  var postrmContent = fs.readFileSync("scripts/postrm", "utf8");

  return gulp
    .src([
      'src/**',
      'node_modules/**',
      '!**/.git/**'
    ], { base: process.cwd() })
    .pipe(deb('example.deb', {
      name: 'example',
      version: '1.0.0-1',
      maintainer: {
        name: 'John Doe',
        email: 'john.doe@example.org'
      },
      short_description: 'some short description',
      long_description: 'some long description',
      //...
      scripts: {
        preinst: preinstContent,
        postrm: postrmContent
      }
    }))
    .pipe(gulp.dest('builds/'));
});

TODO

Contribution

Feel free to contribute! Any help will be useful!