npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ern-container-transformer-pbxproj

v1.1.0

Published

This transformer can be used to patch one or more pbxproj (iOS project file) included in the Container, in specific ways.

Downloads

19

Readme

iOS pbxproj Container Transformer

This transformer can be used to patch one or more pbxproj (iOS project file) included in the Container, in specific ways.

For now this transformer only allows adding projects to other projects, as well as adding other project targets as target dependencies of any project.

Inputs

  • containerPath : Path to the Container to transform
  • addProjects : Array of AddProject objects (see below)
  • addTargetDependencies : Array of AddTargetDependency objects (see below)
  • setBuildSettings : Array of SetBuildSettings objects (see below)

Patching directives objects

AddProject

Add a project to one or more other target projects.

{
  /**
   * Relative path to the target project in which
   * to add another project.
   * The path is relative to the Container root directory.
   * Can also be a glob. If multiple projects are
   * matching the glob pattern, then all of these
   * projects will be transformed sequentially.
   */
  targetProjectPath: string

  /**
   * Absolute or relative path (relative to the parent directory
   * of the target .xcodeproj directory)
   */
  sourceProjectPath: string
}

AddTargetDependency

Add one or more native targets from a project, to one or more other projects.

{
  /**
   * Relative path to the target project in which
   * The path is relative to the Container root directory.
   * Can also be a glob. If multiple projects are
   * matching the glob pattern, then all of these
   * projects will be transformed sequentially.
   */
  targetProjectPath: string

  /**
   * Absolute or relative path (relative to the parent directory
   * of the target .xcodeproj directory) to the project containing
   * the native target to add as a dependency.
   */
  sourceProjectPath: string

  /**
   * Array of native targets from the source project to
   * add as target dependencies in the target project(s).
   */
  sourceNativeTargets: string[]
}

SetBuildSettings

Set one more build settings in one or more target projects.

{
  /**
   * Absolute path to the target project in which
   * to add a target dependency from another project
   * Can also be a glob. If multiple projects are
   * matching the glob pattern, then all of these
   * projects will be transformed sequentially.
   */
  targetProjectPath: string

  /**
   * Array of native targets from the source project to
   * add as target dependencies in the target project(s).
   */
  buildSettings: {
    /**
      * Configuration(s) for which these build settings apply.
      * For example [ 'Debug' , 'Release' ]
      */
    configurations: string[]

    /**
     * Build settings as key values pairs
     */
    settings: { [key: string]: string }
  }[]
}

Usage

With ern transform-container CLI command

$ ern transform-container --containerPath [pathToContainer] -t pbxproj -e '{"addProjects":[...], "addTargetDependencies":[...]}, "setBuildSettings":[...]'

Instead of passing the whole configuration on the command line for --extra/-e, it is also possible to use a file path to a json file holding the configuration, or a path to a file stored in the Cauldron. Check out the ern transform-container command documentation for more info.

With Cauldron

To automatically transform the Cauldron generated Containers of a target native application and platform, you can add a transformer entry in the Cauldron in the Container generator configuration object as follow :

"transformers": [
  {
    "name": "pbxproj",
    "extra": {
      "addProjects": [...],
      "addTargetDependencies" : [...],
      "setBuildSettings": [...]
    }
  }
]

Programmatically

import PbxProjTransformer from 'ern-container-transformer-pbxproj'
const transformer = new BuildConfigTransformer()
transformer.transform(
  {
    /* Local file system path to the Container */
    containerPath: string
    /* Extra data specific to this publisher */
    extra?: {
      addProjects: AddProject[],
      addTargetDependencies: AddTargetDependency[]
      setBuildSettings: SetBuildSettings[]
    }
  }
})