JSPM

npm-pkgbuild

17.1.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1264
  • Score
    100M100P100Q119264F
  • License 0BSD

create ArchLinux, RPM and Debian packages from npm packages

Package Exports

    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

    Properties

    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

    NodeModulesContentProvider

    Extends ContentProvider

    Content from node_modules. Requires .npmrc or NPM_TOKEN environment

    Parameters

    • definitions
    • entryProperties

    Properties

    • withoutDevelpmentDependencies boolean

    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

    NFTContentProvider

    Extends ContentProvider

    Content provided form the file system.

    Parameters

    name

    Returns string name of the content provider

    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>

    fields

    fields

    fields

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

    fields

    quoteFile

    Parameters

    • name

    RPM

    Extends Packager

    produce rpm packages

    prepare

    Check for rpmbuild presence.

    Parameters

    Returns Promise<boolean> true when rpmbuild executable is present

    pkgKeyValuePairOptions

    Type: Object

    OCI

    Extends Packager

    Low level OCI compatible packager

    DOCKER

    Extends Packager

    docker image build

    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: []}

    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

    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