npm-pkgbuild
Version:
create ArchLinux, RPM and Debian packages from npm packages
727 lines (467 loc) • 29.1 kB
Markdown
[](https://www.npmjs.com/package/npm-pkgbuild)
[](https://spdx.org/licenses/0BSD.html)
[](https://typescriptlang.org)
[](https://bundlejs.com/?q=npm-pkgbuild)
[](https://npmjs.org/package/npm-pkgbuild)
[](https://github.com/arlac77/npm-pkgbuild/issues)
[](https://actions-badge.atrox.dev/arlac77/npm-pkgbuild/goto)
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
[](https://snyk.io/test/github/arlac77/npm-pkgbuild)
[](https://coveralls.io/github/arlac77/npm-pkgbuild)
## npm-pkgbuild
Create ArchLinux, RPM, Debian and Docker packages from npm packages.
# usage
In a package directory execute
```shell
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
```shell
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.
```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](https://www.npmjs.com/package/mf-hosting) or [mf-hosting-frontend](https://www.npmjs.com/package/mf-hosting-frontend) modules.
# API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### Table of Contents
* [allInputs](#allinputs)
* [allOutputs](#alloutputs)
* [npmArchMapping](#npmarchmapping)
* [content2Sources](#content2sources)
* [Parameters](#parameters)
* [PackageDefinition](#packagedefinition)
* [Properties](#properties)
* [extractFromPackage](#extractfrompackage)
* [Parameters](#parameters-1)
* [BUILDAH](#buildah)
* [ContentProvider](#contentprovider)
* [Parameters](#parameters-2)
* [Properties](#properties-1)
* [asyncIterator](#asynciterator)
* [FileContentProvider](#filecontentprovider)
* [Parameters](#parameters-3)
* [asyncIterator](#asynciterator-1)
* [name](#name)
* [NodeModulesContentProvider](#nodemodulescontentprovider)
* [Parameters](#parameters-4)
* [Properties](#properties-2)
* [asyncIterator](#asynciterator-2)
* [name](#name-1)
* [NPMPackContentProvider](#npmpackcontentprovider)
* [Parameters](#parameters-5)
* [Properties](#properties-3)
* [name](#name-2)
* [NFTContentProvider](#nftcontentprovider)
* [Parameters](#parameters-6)
* [asyncIterator](#asynciterator-3)
* [name](#name-3)
* [DEBIAN](#debian)
* [hookMapping](#hookmapping)
* [attributes](#attributes)
* [prepare](#prepare)
* [Parameters](#parameters-7)
* [quoteFile](#quotefile)
* [Parameters](#parameters-8)
* [RPM](#rpm)
* [hookMapping](#hookmapping-1)
* [attributes](#attributes-1)
* [prepare](#prepare-1)
* [Parameters](#parameters-9)
* [pkgKeyValuePairOptions](#pkgkeyvaluepairoptions)
* [attributes](#attributes-2)
* [OCI](#oci)
* [DOCKER](#docker)
* [attributes](#attributes-3)
* [prepare](#prepare-2)
* [Parameters](#parameters-10)
* [Packager](#packager)
* [Parameters](#parameters-11)
* [packageName](#packagename)
* [Parameters](#parameters-12)
* [tmpdir](#tmpdir)
* [prepare](#prepare-3)
* [Parameters](#parameters-13)
* [create](#create)
* [Parameters](#parameters-14)
* [workspaceLayout](#workspacelayout)
* [prepare](#prepare-4)
* [Parameters](#parameters-15)
* [Packager](#packager-1)
* [Parameters](#parameters-16)
* [packageName](#packagename-1)
* [Parameters](#parameters-17)
* [tmpdir](#tmpdir-1)
* [prepare](#prepare-5)
* [Parameters](#parameters-18)
* [create](#create-1)
* [Parameters](#parameters-19)
* [workspaceLayout](#workspacelayout-1)
* [prepare](#prepare-6)
* [Parameters](#parameters-20)
* [Field](#field)
* [Properties](#properties-4)
* [deleteKey](#deletekey)
* [Parameters](#parameters-21)
* [copyNodeModules](#copynodemodules)
* [Parameters](#parameters-22)
* [PublishingDetail](#publishingdetail)
* [Properties](#properties-5)
* [createPublishingDetails](#createpublishingdetails)
* [Parameters](#parameters-23)
* [publish](#publish)
* [Parameters](#parameters-24)
* [utf8StreamOptions](#utf8streamoptions)
* [decodePassword](#decodepassword)
* [Parameters](#parameters-25)
* [FunctionDecl](#functiondecl)
* [Properties](#properties-6)
* [extractFunctions](#extractfunctions)
* [Parameters](#parameters-26)
* [fieldProvider](#fieldprovider)
* [Parameters](#parameters-27)
* [Expander](#expander)
* [Parameters](#parameters-28)
* [copyEntries](#copyentries)
* [Parameters](#parameters-29)
## 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](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** from pkgbuild.content
* `dir`  
Returns **Iterable<[ContentProvider](#contentprovider)>** 
## PackageDefinition
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
### Properties
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** values describing the package attributes
* `properties.dependencies` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `sources` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[ContentProvider](#contentprovider)>** content providers
* `output` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** package type
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** identifier of the variant
* `variant.name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** name of the variant
* `variant.arch` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/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](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)
* `options.dir` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** where to look for package.json
* `options.verbose` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** log
* `env` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** as delared in process.env (optional, default `{}`)
Returns **AsyncIterable<[PackageDefinition](#packagedefinition)>** 
## BUILDAH
**Extends DOCKER**
Use buildah @see <https://buildah.io>
## ContentProvider
Source of package content.
### Parameters
* `definitions`  
* `entryProperties`  
* `directoryProperties`  
### Properties
* `dir` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `transformer` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\<Transformer>** 
### asyncIterator
List all entries.
Returns **AsyncIterable<(ContentEntry | CollectionEntry)>** all entries
## FileContentProvider
**Extends ContentProvider**
Content provided form the file system.
### Parameters
* `definitions` **([Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** 
* `definitions.pattern` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>)** 
* `definitions.base` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** base directory where to find the files
* `entryProperties`  
* `directoryProperties`  
### asyncIterator
Returns **AsyncIterable<(ContentEntry | CollectionEntry)>** all entries
### name
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/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](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** 
### asyncIterator
List all entries.
Returns **AsyncIterable<(ContentEntry | CollectionEntry)>** all entries
### name
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** name of the content provider
## NPMPackContentProvider
**Extends ContentProvider**
Content from npm pack.
### Parameters
* `definitions` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `entryProperties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** to be set for each entry
* `directoryProperties`  
### Properties
* `dir` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
### name
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** name of the content provider
## NFTContentProvider
**Extends ContentProvider**
Content provided form the file system.
### Parameters
* `definitions` **([Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** 
* `definitions.pattern` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>)** 
* `definitions.base` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** base directory where to find the files
* `entryProperties`  
* `directoryProperties`  
### asyncIterator
Returns **AsyncIterable\<ContentEntry>** all entries
### name
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** name of the content provider
## DEBIAN
**Extends Packager**
Create .deb packages
### hookMapping
Map install hook named from default (arch) to deb.
### attributes
* **See**: <https://www.debian.org/doc/debian-policy/ch-controlfields.html>
* **See**: <https://linux.die.net/man/5/deb-control>
### prepare
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant.arch` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** 
## quoteFile
### Parameters
* `name`  
## RPM
**Extends Packager**
Produce rpm packages.
### hookMapping
Map install hook named from default (arch) to rpm.
### attributes
* **See**: <https://rpm-packaging-guide.github.io>
### prepare
Check for rpmbuild presence.
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant.arch` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** true when rpmbuild executable is present
## pkgKeyValuePairOptions
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/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
* **See**: <https://docs.docker.com/engine/reference/builder/>
### prepare
Check for docker presence.
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant.arch` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** true when docker executable is present
## Packager
### Parameters
* `properties`  
### packageName
What is the package name in the package eco-system.
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** package name in the target eco-system
### tmpdir
Create tmp directory.
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** directory path
### prepare
Prepares artifact generation.
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `publishingDetail` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{properties: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object), destination: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), tmpdir: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), staging: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>** 
### create
Execute package generation.
#### Parameters
* `sources` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `transformer` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>** 
* `publishingDetails` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[PublishingDetail](#publishingdetail)>** 
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `expander` **function ([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)): [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** identifier of the resulting package
### workspaceLayout
Returns **{named: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object), others: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>}** 
### prepare
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** 
## Packager
Base Packager
### Parameters
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
### packageName
What is the package name in the package eco-system.
#### Parameters
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** package name in the target eco-system
### tmpdir
Create tmp directory.
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** directory path
### prepare
Prepares artifact generation.
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `publishingDetail` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{properties: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object), destination: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), tmpdir: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), staging: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>** 
### create
Execute package generation.
#### Parameters
* `sources` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `transformer` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>** 
* `publishingDetails` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[PublishingDetail](#publishingdetail)>** 
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `expander` **function ([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)): [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** identifier of the resulting package
### workspaceLayout
Returns **{named: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object), others: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>}** 
### prepare
#### Parameters
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `variant` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** 
## Field
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
### Properties
* `alias` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** interchangeable field name
* `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `default` **any** 
* `mandatory` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** 
## deleteKey
### Parameters
* `object` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `key` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
## copyNodeModules
### Parameters
* `source` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `dest` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `defaultOptions`)
## PublishingDetail
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
### Properties
* `url` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `scheme` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `username` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
* `password` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
## createPublishingDetails
### Parameters
* `locations` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `[]`)
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** 
* `properties.PKGBUILD_PUBLISH` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
* `properties.arch` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
* `properties.access` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
* `properties.type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
* `properties.username` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[PublishingDetail](#publishingdetail)>** 
## publish
### Parameters
* `artifactIdentifier` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `publishingDetail` **[PublishingDetail](#publishingdetail)?** 
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** 
* `logger` **function (any): void** (optional, default `console.log`)
## utf8StreamOptions
Type: BufferEncoding
## decodePassword
Decode a password
### Parameters
* `password` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** plaintext password
## FunctionDecl
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
### Properties
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `body` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
## extractFunctions
Extract shell functions from a given text.
### Parameters
* `source` **AsyncIterable<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** 
Returns **AsyncIterable<[FunctionDecl](#functiondecl)>** 
## fieldProvider
### Parameters
* `properties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
* `attributes` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
Returns **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** 
## Expander
Type: [Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)
### Parameters
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/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](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
* `expander` **[Expander](#expander)** (optional, default `v=>v`)
# install
With [npm](http://npmjs.org) do:
```shell
npm install npm-pkgbuild
```
# license
BSD-2-Clause