{ "id": "123865", "key": "TIMOB-16008", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "2", "description": "The problem described is an issue which will never be fixed.", "name": "Won't Fix" }, "resolutiondate": "2016-09-02T06:17:07.000+0000", "created": "2013-12-17T17:42:08.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2017-03-22T17:54:46.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10207", "name": "Tooling" } ], "description": "There is a desire to have per-project selection for Alloy version, and CLI version? Maybe inside Tiapp.xml?\r\n\r\nOne logical solution to this is npm installs local to the project for titanium, Alloy, etc… For example:\r\n\r\n{code}\r\ncd PROJECT_DIR && npm install alloy\r\n{code}\r\n\r\nWould put alloy in the project’s local node_modules folder. Alloy could be invoked from that folder like this:\r\n\r\n{code}\r\n./node_modules/.bin/alloy\r\n{code}\r\n\r\nWhile this can be done manually, the idea long-term solution is for titanium projects to have a package.json file pre-propulated with these dependencies and versions so that all a developer or Studio needs to do is invoke {{npm install}} to automatically pull in all these dependencies locally. This would all come hand in hand with a more focused integration with npm in the Titanium toolchain.\r\n\r\nFor Studio to be able to take advantage of this:\r\n\r\n* *Titanium CLI* – All of Studio’s call to “titanium” should first check for the existence of the “./node_modules/.bin/titanium” binary. It should use that for all titanium calls, and fallback to the globally installed one if no local version is present.\r\n* *Alloy* – Alloy’s CLI hook would need to be updated to do roughly the same thing. If Studio makes any calls directly to “alloy” (not sure if you do), they would have to do the same check as above.\r\n", "attachment": [], "flagged": false, "summary": "Tooling: Per-project installs of NPM modules", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "284775", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This will definitely involve corresponding and additional tickets in both ALOY and TISTUD as well. ", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-17T17:44:53.000+0000", "updated": "2013-12-17T17:44:53.000+0000" }, { "id": "284881", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Interesting idea, but will it blend?", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-12-17T22:18:01.000+0000", "updated": "2013-12-17T22:18:01.000+0000" }, { "id": "284887", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Indubitably: http://www.youtube.com/watch?v=4nsNqbaAFuE", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-17T22:26:50.000+0000", "updated": "2013-12-17T22:26:50.000+0000" }, { "id": "395179", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Everything about this is a bad idea.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-09-02T06:17:07.000+0000", "updated": "2016-09-02T06:17:07.000+0000" }, { "id": "414820", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as the issue will not fix and with reference to the above comments. ", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-22T17:54:46.000+0000", "updated": "2017-03-22T17:54:46.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }