create mac osx flat packages (.pkg)
Last updated 4 years ago by octoblu .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @octoblu/osx-pkg 
SYNC missed versions from official npm registry.



Create OSX flat packages (.pkg) with pure JS.


var osxpkg = require('osx-pkg')
var fs = require('fs')

var opts = {
  dir: './root' // the contents of this dir will be installed in installLocation
  installLocation: '/Applications'
  identifier: 'org.myorg.myapp.pkg',
  title: 'MyApp',
  version: '1.0.0'


The packaging is not done in a complete streaming fashion, but a temporary folder will be used.

example with multiple components

var osxpkg = require('osx-pkg')
var fs = require('fs')

var pkgDir = './out'


osxpkg.addComponent(pkgDir, './build/CoolApp.app', {...}, function (err) {
  if (err) return console.error(err)
  osxpkg.addComponent(pkgDir, './build/CoolAppCompanion.app', {...}, function (err) {
    if (err) return console.error(err)
    osxpkg.addDistribution(pkgDir, function (err) {
      if (err) return console.error(err)



Returns a readable stream that you can read the finished Installer from.


  • dir Path to a directory whose contents are going to be installed in installLocation

  • identifier Identifier for your package, e.g. org.myorg.myapp.pkg

  • title The Title of your package

  • installLocation (defaults to /)

  • tmpDir The unpackaged pkg will be created here (defaults to a newly created directory in the tmp dir)

osxpkg.addComponent(inDir, outDir, opts, cb)

The final .pkg is just a xar archived directory with the following structure:

- Distribution
- component1.pkg
  - Bom
  - Payload
  - PackageInfo
- component2.pkg
  - Bom
  - Payload
  - PackageInfo
- Resources (optional)

These components are actually called packages as well. But I am calling them components to not confuse them with the resulting package...

Given an inDir and an outDir, this function will package the contents of inDir as a component and add it to outDir. So it allows to add multiple components to an installer before creating the Distribution file and finalizing it with xar.


This modules ships with a CLI:

osx-pkg <inputdir>
Packages <inputdir> as an osx flat package to stdout
	--identifier Identifier for your package
	--title Title of your package
	--location Install location (default "/")


You can also create your pkg files by using the components of this modules. Here are 3 modules that are essential for creating an OSX flat package.


Pack the Payload in the cpio format.


Create the Bill of Materials files for the contents


Flatten the package with xar.

Current Tags

  • 1.1.0                                ...           latest (4 years ago)

2 Versions

  • 1.1.0                                ...           4 years ago
  • 1.0.2                                ...           4 years ago
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (12)
Dev Dependencies (1)

Copyright 2014 - 2021 © npmmirror.com |