JSPM

npm-pkgbuild

19.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1342
  • Score
    100M100P100Q117481F
  • License 0BSD

create ArchLinux, RPM and Debian packages from npm packages

Package Exports

  • npm-pkgbuild

Readme

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

allInputs

All content providers (input)

allOutputs

All output formats

npmArchMapping

Node architecture name to os native arch name mapping {@see https://nodejs.org/dist/latest-v18.x/docs/api/process.html#processargv}

content2Sources

Delivers ContentProviders from pkgbuild.content definition.

Parameters

  • content Object from pkgbuild.content
  • dir

Returns Iterable<ContentProvider>

PackageDefinition

Type: Object

Properties

  • properties Object values describing the package attributes

    • properties.dependencies Object
  • sources Array<ContentProvider> content providers

  • output Object package type

  • variant Object identifier of the variant

    • variant.name string name of the variant
    • variant.arch string name of the architecture

extractFromPackage

Extract package definition from package.json.

  • for each architecture deliver a new result
  • if no architecture is given one result set is provided nethertheless
  • architectures are taken from cpu (node arch ids) and from pkgbuild.arch (raw arch ids)
  • architecture given in a variant definition are used to restrict the set of avaliable architectures

Parameters

  • options Object (optional, default {})

    • options.dir string? where to look for package.json
    • options.verbose boolean? log
  • env Object as delared in process.env (optional, default {})

Returns AsyncIterable<PackageDefinition>

BUILDAH

Extends DOCKER

Use buildah @see https://buildah.io

ContentProvider

Source of package content.

Parameters

  • definitions
  • entryProperties
  • directoryProperties

Properties

asyncIterator

List all entries.

Returns AsyncIterable<(ContentEntry | CollectionEntry)> all entries

FileContentProvider

Extends ContentProvider

Content provided form the file system.

Parameters

  • definitions (Object | string)

  • entryProperties

  • directoryProperties

asyncIterator

Returns AsyncIterable<(ContentEntry | CollectionEntry)> all entries

name

Returns string name of the content provider

NodeModulesContentProvider

Extends ContentProvider

Content from node_modules. Requires .npmrc or NPM_TOKEN environment

Parameters

  • definitions
  • entryProperties
  • directoryProperties

Properties

  • withoutDevelpmentDependencies boolean

asyncIterator

List all entries.

Returns AsyncIterable<(ContentEntry | CollectionEntry)> all entries

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
  • directoryProperties

Properties

name

Returns string name of the content provider

NFTContentProvider

Extends ContentProvider

Content provided form the file system.

Parameters

  • definitions (Object | string)

  • entryProperties

  • directoryProperties

asyncIterator

Returns AsyncIterable<ContentEntry> all entries

name

Returns string name of the content provider

DEBIAN

Extends Packager

Create .deb packages

hookMapping

Map install hook named from default (arch) to deb.

attributes

prepare

Parameters

Returns Promise<boolean>

quoteFile

Parameters

  • name

RPM

Extends Packager

Produce rpm packages.

hookMapping

Map install hook named from default (arch) to rpm.

attributes

prepare

Check for rpmbuild presence.

Parameters

Returns Promise<boolean> true when rpmbuild executable is present

pkgKeyValuePairOptions

Type: Object

attributes

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

OCI

Extends Packager

Low level OCI compatible packager

DOCKER

Extends Packager

docker image build

attributes

prepare

Check for docker presence.

Parameters

Returns Promise<boolean> true when docker executable is present

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: Array<string>}

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: Array<string>}

prepare

Parameters

Returns Promise<boolean>

Field

Type: Object

Properties

deleteKey

Parameters

copyNodeModules

Parameters

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)

utf8StreamOptions

Type: 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)

install

With npm do:

npm install npm-pkgbuild

license

BSD-2-Clause