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
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
utf8StreamOptions
Type: Object
Properties
packageNameMapping
What is the node name in the package eco-system
decodePassword
Decode a password
Parameters
Returns string plaintext password
FunctionDecl
Type: Object
Properties
Extract shell functions from a given text.
Parameters
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
)
NFTContentProvider
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
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
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
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
quoteFile
Parameters
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