# Project Packer
The project packer is a bundle that encapsulates a project generator together with a publisher and executes in a pipeline all the necessary steps so as to have a working project.
# Arguments
export interface PackerFactoryParams {
publisher?: Publisher
generator?: ProjectGenerator
template?: GeneratedFolder
remoteTemplateDefinition?: RemoteTemplateDefinition
assets?: AssetsDefinition
}
# API reference
# setPublisher(publisher)
Sets the publisher for all subsequent calls of the pack function
- Arguments:
(Publisher) publisher
- Returns:
void
- Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer"
import NowPublisher from "@teleporthq/teleport-publisher-now"
const deployToken = "YOUR_DEPLOY_TOKEN_HERE"
NowPublisher.setAccessToken(deployToken)
ProjectPacker.setPublisher(NowPublisher)
# setGenerator(generator)
Sets the generator for all subsequent calls of the pack function
- Arguments:
(ProjectGenerator) generator
- Returns:
void
- Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer"
import NextGenerator from "@teleporthq/teleport-project-generator-next"
ProjectPacker.setGenerator(NextGenerator)
# setAssets(assets)
Sets the static assets collection for all subsequent calls of the pack function
- Arguments:
(AssetsDefinition) assets
- Returns:
void
- Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer"
const assets: AssetsDefinition = {
/* ... */
}
ProjectPacker.setAssets(assets)
# setTemplate(template)
You can define the template in which the generated pages and components will be injected and set it to the packer before running the main pack
method
- Arguments:
(GeneratedFolder) template
- Returns:
void
- Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer"
const template: GeneratedFolder = {
/* ... */
}
ProjectPacker.setTemplate(template)
# loadTemplate(remoteTemplate)
In case you want to use a remote template (a github repository), you can load it before running the main method
- Arguments:
(RemoteTemplateDefinition) remoteTemplate
- Returns:
Promise<void>
- Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer"
const remoteTemplate: RemoteTemplateDefinition = {
/* ... */
}
await ProjectPacker.loadTemplate(remoteTemplate)
# pack(projectUidl, packParams)
Arguments:
(ProjectUIDL) projectUidl
(PackerFactoryParams) packParams
Returns:
Promise<PublisherResponse>
- will have the same return type as the chosen publisher
Usage:
import ProjectPacker from "@teleporthq/teleport-project-packer" import NowPublisher from "@teleporthq/teleport-publisher-now" import NextGenerator from "@teleporthq/teleport-project-generator-next" const projectUidl: ProjectUIDL = { /* ... */ } // # Setup the publisher const deployToken = "YOUR_DEPLOY_TOKEN_HERE" NowPublisher.setAccessToken(deployToken) // # Setup the packer ProjectPacker.setGenerator(NextGenerator) ProjectPacker.setPublisher(NowPublisher) const result = await ProjectPacker.pack(project)
# Example
import ProjectPacker from "@teleporthq/teleport-project-packer"
import NowPublisher from "@teleporthq/teleport-publisher-now"
import NextGenerator from "@teleporthq/teleport-project-generator-next"
const projectUidl: ProjectUIDL = {
/* ... */
}
const assets: AssetsDefinition = {
/* ... */
}
const remoteTemplateDefinition: RemoteTemplateDefinition = {
provider: "github",
username: "teleporthq",
repo: "teleport-project-template-next",
auth: {
token: "YOUR_GITHUB_TOKEN"
}
}
// # Setup the publisher
const deployToken = "YOUR_DEPLOY_TOKEN_HERE"
NowPublisher.setAccessToken(deployToken)
// # Setup the packer
ProjectPacker.setGenerator(NextGenerator)
ProjectPacker.setPublisher(NowPublisher)
const result = ProjectPacker.pack(project, {
remoteTemplateDefinition,
assets
})
console.log(result)
Result:
{
success: true
payload: "https://teleport-project-template-next.now.sh"
}