{"id":15198711,"url":"https://github.com/bwin/aspm","last_synced_at":"2025-10-02T14:31:53.481Z","repository":{"id":24372548,"uuid":"27771918","full_name":"bwin/aspm","owner":"bwin","description":"Atom-Shell Package Manager (inofficial)","archived":true,"fork":false,"pushed_at":"2015-01-30T05:37:59.000Z","size":404,"stargazers_count":11,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-09-25T00:33:12.266Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bwin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-09T15:04:38.000Z","updated_at":"2023-01-28T13:26:02.000Z","dependencies_parsed_at":"2022-08-22T17:30:40.510Z","dependency_job_id":null,"html_url":"https://github.com/bwin/aspm","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwin%2Faspm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwin%2Faspm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwin%2Faspm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwin%2Faspm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bwin","download_url":"https://codeload.github.com/bwin/aspm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219875714,"owners_count":16554705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-28T01:40:19.534Z","updated_at":"2025-10-02T14:31:53.166Z","avatar_url":"https://github.com/bwin.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aspm - Atom-Shell package manager\n[![build status](http://img.shields.io/travis/bwin/aspm/master.svg?style=flat-square)](https://travis-ci.org/bwin/aspm)\n[![dependencies](http://img.shields.io/david/bwin/aspm.svg?style=flat-square)](https://david-dm.org/bwin/aspm)\n[![npm version](http://img.shields.io/npm/v/aspm.svg?style=flat-square)](https://npmjs.org/package/aspm)\n\n\u003e A node CLI script like npm but for Atom-Shell. Install and build npm-modules for Atom-Shell.\n\n`aspm` is designed as a replacement for `npm` if you're working on an Atom-Shell project.\n\n**Warning:** *May be unreliable at the moment.*\n\n**Table of Contents**\n- [Prequisities](#prequisities)\n- [Installation](#installation)\n- [Quick-Start](#quick-start)\n- [Usage](#usage)\n- [Configuration (optional)](#configuration-optional)\n  - [Overriding configuration](#overriding-configuration)\n  - [Without configuration](#without-configuration)\n- [Examples](#examples)\n- [How it works](#how-it-works)\n  - [Under the hood](#under-the-hood)\n  - [Support for modules that use `node-pre-gyp`](#support-for-modules-that-use-node-pre-gyp)\n- [BTW](#btw)\n\n## Motivation\nThere are several ways to build modules for atom-shell, but none of them felt quite right for my needs. Also, since `node-pre-gyp` doesn't yet support atom-shell, it gets even worse for modules using that.\nThis tries to be as convenient as possible for a small project. Just use it for everything in your project as you would use `npm`. Most of the time it does just pass-through to `npm` anyway.\nIf you're compiling for several platforms/atom-shell-versions on the same machine, it probably makes more sense to use Grunt build tasks (see [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell). This also allows renaming the executable file on Windows. Probably even more.).\n\nMaybe this is unnecessary, does it the wrong way, is generally a stupid idea or whatever. (But at the time it works for me and makes updating atom-shell easier for me. Atom-shell-starter and grunt-build-atom-shell came after I started my current project.)\n\n## Prequisities\nSince you're using Atom-Shell you most likely have those installed already.\n- `node` \u0026 `npm`(global)\n- `node-gyp`(global), also fulfill it's [requirements](https://github.com/TooTallNate/node-gyp#installation).\n\n## Installation\nInstall (preferred globally) with `npm install aspm -g`.\n\n## Quick-Start\n- Install globally with npm. `npm install -g aspm`\n- Add some configuration to your package.json. (See Configuration. This is optional but highly recommended.)\n- Now use `aspm` in place of `npm` in your project.\n\n## Usage\n```\n  Usage: aspm [options] [command]\n\n  Commands:\n\n    install|i [module]  install module (fetch \u0026 build)\n    fetch|f [module]    fetch module\n    build|b \u003cmodule\u003e    build module\n\n  Options:\n\n    -h, --help                        output usage information\n    -V, --version                     output the version number\n    -t, --target \u003cversion\u003e            Atom-Shell version\n    -a, --arch \u003carch\u003e                 target architecture\n    -p, --target-platform \u003cplatform\u003e  target platform\n    -s, --save                        save as dependency to package.json\n    -s, --save-dev                    save as devDependency to package.json\n    -g                                install globally with normal npm\n    --tarball [url/path]              install from [remote] tarball\n    --quiet                           don't say anything\n```\n\nMost npm commands are just passed trough to npm (dedupe, shrinkwrap, etc. should all work normally).\n\nUnlike npm which takes its parameters in the form `--target=1.2.3`, aspm expects `--target 1.2.3`.\n\nAlso if you try to install globally with `-g` we bail out and just pretend you used npm in the first place, since it wouldn't make much sense to install for atom-shell globally.\nTo do that anyways, you can use the `--g-yes-install-for-atom-shell-globally` flag. (No, you can't.)\n\n## Configuration (optional)\nYou can (and should to make things more convenient) configure default values for target, arch and platform in your `package.json`.\n```js\n{\n  \"config\": {\n    \"atom-shell\": {\n      \"version\": \"0.19.5\",\n      \"arch\": \"ia32\",\n      \"platform\": \"win32\"\n    }\n  }\n}\n```\nThis way you can use it just like npm without additional parameters (for basic tasks as shown in usage).\n\n### Overriding configuration\nYou can always set/override some or all configuration values. For example: `aspm install --target 0.19.5 --arch ia32`.\n\n### Without configuration\n**Important:** If you don't specify default values, you'll always have to provide at least a target and arch.\n\n## Examples\n```\n# Install all modules from package.json\naspm install\n\n# Install specific module and save as dependency in package.json\naspm install serialport --save\n\n# Install specific module in a specific version and save as dependency in package.json\naspm install sqlite3@3.0.4 --save\n\n# Install multiple module and save as dependency in package.json\naspm install pathwatcher v8-profiler --save\n\n# Install module from tarball\n# In contrast to npm you have to specify the module name here too.\naspm install sqlite3 --tarball https://github.com/mapbox/node-sqlite3/archive/master.tar.gz --target 0.19.5 --arch ia32\n\n# Build a specific module for a specific target\naspm build leveldown --target 0.19.5 --arch ia32\n# or shorter\naspm b leveldown -t 0.19.5 -a ia32\n\n# fetch all modules from package.json, then build all in a separate step\naspm fetch\naspm build\n```\n\n## How it works\n\n### Under the hood\nTo fetch the modules we just call out to `npm` with `--ignore-scripts`. To build we use `node-gyp` with some additional arguments.\n\n### Support for modules that use `node-pre-gyp`\nWe have basic support for compiling modules that use `node-pre-gyp` (i.e. `sqlite3`) by faking some stuff.\n\n## Hints\n- [sqlite3]() in version 3.0.4 (current npm) won't compile for atom-shell \u003e= 0.18.0. We can't change that. But it's possible to build with the current github master. (And it will when 3.0.5 or whatever comes next is released.)\n- The [test suite](https://travis-ci.org/bwin/aspm) compiles and requires a few modules for a few atom-shell versions on ia32 and x64.\n  - Modules/Packages: `time@0.11.0`, `leveldown@1.0.0`, `nslog@1.0.1`, `pathwatcher@2.3.5`, `serialport@1.4.9`, `zipfile@0.5.4`, `v8-profiler@5.2.1`, `sqlite3@3.0.4` \u0026 `sqlite3@master`(see above)\n  - Atom-Shell versions: 0.17.2, 0.19.5, current\n  - Platforms: linux ia32 \u0026 x64 on travis-ci and locally tested in a vm on Windows 7\n\n- I don't really know about Mac compability, since I don't have one here at the moment.\n- Modules with native dependencies won't get compiled at the moment. Well, their dependencies won't be. This makes using something like `nano` (which depends on `serialport`) impossible at the moment.\n\n## BTW\nThere may or may not be several (maybe better?) alternatives to this.\n- https://github.com/atom/atom-shell/blob/master/docs/tutorial/using-native-node-modules.md\n\nI haven't looked into these, yet.\n- https://github.com/paulcbetts/grunt-build-atom-shell\n- https://github.com/atom/atom-shell-starter in scripts/\n- https://github.com/probablycorey/atom-node-module-installer","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwin%2Faspm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbwin%2Faspm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwin%2Faspm/lists"}