Skip to content

arlac77/npm-pkgbuild

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm License Typed with TypeScript bundlejs downloads GitHub Issues Build Status Styled with prettier Commitizen friendly Known Vulnerabilities Coverage Status

npm-pkgbuild

Create ArchLinux, RPM, Debian and Docker packages from npm packages.

usage

In a package directory execute

npm-pkgbuild --rpm --debian --arch --content /destination:build --publish /some/directory

This will create a arch, rpm and a debian package of the build dir.

upload package

npm-pkgbuild --arch --content build --publish 'https://my.package-service.com/binaries/linux/{{type}}/{{access}}/{{arch}}'

You can specify the package content in package.json.

{
  "pkgbuild": {
    "content": {
      "/some/location/" : { "base": "build" },
      "/etc/myconfig.json" : "sample-config.json",
      "/erc/secret" : { "name":  "secret", "mode": "600" },
      "/opt/myapp": [
        {
          "type": "npm-pack"
        },
        {
          "type": "node-modules",
          "withoutDevelpmentDependencies": true
        }
      ]
    },
    "hooks" : "pkg/hooks",
    "output": {
      "debian" : {},
      "rpm" : {},
      "arch" : {}
    },
  "dependencies": { "nginx" : ">=1.12" }
  }
}

content providers

Defining where the package content should come from.

files (default)

content from the file system

npm-pack

content as provided by npm pack

node-modules

content of all (production) dependencies

options: - withoutDevelpmentDependencies when to stip away dev dependencies (defaults to true)

shared configuration

You can import common configuration from other packages. See mf-hosting or mf-hosting-frontend modules.

API

Table of Contents

ContentProvider

Source of package content.

Parameters

  • definitions
  • entryProperties

Properties

destinationPrefix

Returns (string | undefined)

asyncIterator

List all entries.

Returns AsyncIterable<ContentEntry> all entries

FileContentProvider

Extends ContentProvider

Content provided form the file system.

Parameters

name

Returns string name of the content provider

NFTContentProvider

Extends ContentProvider

Content provided form the file system.

Parameters

name

Returns string name of the content provider

utf8StreamOptions

Type: Object

Properties

  • encoding BufferEncoding

decodePassword

Decode a password

Parameters

Returns string plaintext password

FunctionDecl

Type: Object

Properties

extractFunctions

Extract shell functions from a given text.

Parameters

  • source AsyncIterable<string>

Returns AsyncIterable<FunctionDecl>

fieldProvider

Parameters

Returns Function

Expander

Type: Function

Parameters

Returns string

copyEntries

Copy content from source into destinationDirectory. Destination paths a generated without leading '/' (as for entry names too).

Parameters

  • source AsyncIterable<ContentEntry>
  • destinationDirectory string
  • expander Expander (optional, default v=>v)

NodeModulesContentProvider

Extends ContentProvider

Content from node_modules. Requires .npmrc or NPM_TOKEN environment

Parameters

  • definitions
  • entryProperties

Properties

  • withoutDevelpmentDependencies boolean
  • destinationPrefix string base name out output

name

Returns string name of the content provider

NPMPackContentProvider

Extends ContentProvider

Content from npm pack.

Parameters

  • definitions Object
  • entryProperties Object to be set for each entry

Properties

name

Returns string name of the content provider

pkgKeyValuePairOptions

Type: Object

fields

well known package properties https://www.archlinux.org/pacman/PKGBUILD.5.html

fields

fields

fields

BUILDAH

Extends DOCKER

Use buildah @see https://buildah.io

hookMapping

map install hook named from arch to deb

hookMapping

map install hook named from arch to rpm

DEBIAN

Extends Packager

Create .deb packages

prepare

Parameters

Returns Promise<boolean>

DOCKER

Extends Packager

docker image build

prepare

Check for docker presence.

Parameters

Returns Promise<boolean> true when docker executable is present

OCI

Extends Packager

Low level OCI compatible packager

Packager

Parameters

  • properties

packageName

What is the package name in the package eco-system.

Parameters

Returns string package name in the target eco-system

tmpdir

Create tmp directory.

Returns Promise<string> directory path

prepare

Prepares artifact generation

Parameters

Returns Promise<{properties: Object, destination: string, tmpdir: string, staging: string}>

create

Execute package generation.

Parameters

Returns Promise<string> identifier of the resulting package

workspaceLayout

Returns {named: object, others: []}

prepare

Parameters

Returns Promise<boolean>

Packager

Base Packager

Parameters

packageName

What is the package name in the package eco-system.

Parameters

Returns string package name in the target eco-system

tmpdir

Create tmp directory.

Returns Promise<string> directory path

prepare

Prepares artifact generation

Parameters

Returns Promise<{properties: Object, destination: string, tmpdir: string, staging: string}>

create

Execute package generation.

Parameters

Returns Promise<string> identifier of the resulting package

workspaceLayout

Returns {named: object, others: []}

prepare

Parameters

Returns Promise<boolean>

Field

Type: Object

Properties

PublishingDetail

Type: Object

Properties

createPublishingDetails

Parameters

Returns Array<PublishingDetail>

publish

Parameters

  • artifactIdentifier string
  • publishingDetail PublishingDetail?
  • properties Object?
  • logger function (any): void (optional, default console.log)

quoteFile

Parameters

  • name

RPM

Extends Packager

produce rpm packages

prepare

Check for rpmbuild presence.

Parameters

Returns Promise<boolean> true when rpmbuild executable is present

install

With npm do:

npm install npm-pkgbuild

license

BSD-2-Clause