Socket
Socket
Sign inDemoInstall

xcode

Package Overview
Dependencies
10
Maintainers
16
Versions
1066
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    xcode

parser for xcodeproj/project.pbxproj files


Version published
Weekly downloads
1.3M
increased by5.35%
Maintainers
16
Install size
1.23 MB
Created
Weekly downloads
 

Package description

What is xcode?

The xcode npm package is a library for parsing, modifying, and generating Xcode project files programmatically. It allows developers to manipulate Xcode project settings and configurations without manually editing the project files, which can be error-prone and time-consuming.

What are xcode's main functionalities?

Parsing Xcode project files

This feature allows you to parse an existing Xcode project file and work with its contents programmatically.

const xcode = require('xcode');
const fs = require('fs');
const projectPath = 'MyApp.xcodeproj/project.pbxproj';
const project = xcode.project(projectPath);

project.parseSync();
console.log(project);

Adding files to a project

This feature allows you to add new source files to an Xcode project programmatically.

const xcode = require('xcode');
const fs = require('fs');
const projectPath = 'MyApp.xcodeproj/project.pbxproj';
const mySourceFile = 'MyClass.swift';
const project = xcode.project(projectPath);

project.parseSync();
project.addSourceFile(mySourceFile);
fs.writeFileSync(projectPath, project.writeSync());

Adding a framework to a project

This feature allows you to add a framework to an Xcode project programmatically.

const xcode = require('xcode');
const fs = require('fs');
const projectPath = 'MyApp.xcodeproj/project.pbxproj';
const frameworkPath = 'Frameworks/MyFramework.framework';
const project = xcode.project(projectPath);

project.parseSync();
project.addFramework(frameworkPath);
fs.writeFileSync(projectPath, project.writeSync());

Creating a new Xcode project

This feature allows you to create a new Xcode project from scratch programmatically.

const xcode = require('xcode');
const fs = require('fs');
const projectPath = 'MyNewApp.xcodeproj/project.pbxproj';
const project = xcode.project(projectPath);

project.parseSync();
// Add configurations and settings here
fs.writeFileSync(projectPath, project.writeSync());

Other packages similar to xcode

Readme

Source

cordova-node-xcode

NPM

Node CI

Parser utility for xcodeproj project files

Allows you to edit xcodeproject files and write them back out.

based on donated code from alunny / node-xcode

Example

// API is a bit wonky right now
var xcode = require('xcode'),
    fs = require('fs'),
    projectPath = 'myproject.xcodeproj/project.pbxproj',
    myProj = xcode.project(projectPath);

// parsing is async, in a different process
myProj.parse(function (err) {
    myProj.addHeaderFile('foo.h');
    myProj.addSourceFile('foo.m');
    myProj.addFramework('FooKit.framework');
   
    fs.writeFileSync(projectPath, myProj.writeSync());
    console.log('new project written');
});

Working on the parser

If there's a problem parsing, you will want to edit the grammar under lib/parser/pbxproj.pegjs. You can test it online with the PEGjs online thingy at https://pegjs.org/online - I have had some mixed results though.

Tests under the test/parser directory will compile the parser from the grammar. Other tests will use the prebuilt parser (lib/parser/pbxproj.js).

To rebuild the parser js file after editing the grammar, run:

npm run pegjs

(and be sure to restore the Apache license notice in lib/parser/pbxproj.js before committing)

License

Apache V2

FAQs

Last updated on 19 May 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc