I’m really interested in seeing Node.js transpiling as well. ActionScript on the server with support for the whole Node.js eco-system would be a real win and open lots of doors.
On Dec 2, 2015, at 3:06 AM, Josh Tynjala <joshtynj...@gmail.com> wrote: > Oh, I see! I was confused. I now recall seeing that you were working on > getting FlexJS into NPM. > > I thought you meant that you were working on the compiler to add support > for Node.js modules. Getting the compiler to output good code for running > on Node.js is something that I hope to work on soon. > > For those not familiar, Node.js modules are referenced with calls to > require(), like this: > > var fs = require("fs"); > > It's almost like an import in ActionScript. I'm hoping to get the emitter > to output the right require() calls for any classes that are from CommonJS > modules used by Node.js. That's why I mentioned metadata. > > As far as NPM goes, let me share something that I learned while working on > my dts2as utility. If you want someone to be able to use commands like > asjsc directly from the command line, they need to install the package > globally. It won't work for packages installed locally. > > npm install -g flexjs > asjsc src/HelloWorld.as > > Okay, technically, you can run commands from local packages. It's just a > little messy, so I think people avoid it: > > npm install -g flexjs > ./node_modules/.bin/asjsc src/HelloWorld.as > > To get asjsc and other commands to work, you should be able to add them to > package.json. Here's how I did it in dts2as: > > "bin": { > "dts2as": "./bin/dts2as" > } > > For FlexJS, I think something like this should work: > > "bin": { > "asjsc": "./js/bin/asjsc", > "asjscompc": "./js/bin/asjscompc" > } > > - Josh > > On Tue, Dec 1, 2015 at 4:29 PM, OmPrakash Muppirala <bigosma...@gmail.com> > wrote: > >> My first goal is to mimic the Installer to get all the required >> dependencies (AIR, FlashPlayerGlobal.swc, Falcon, Google Closure etc.) The >> problem here is that except for Google Closure, nothing else is available >> as a require dependency from npm. And Adobe AIR and Adobe >> FlashPlayerGlobal.swc need license agreement gates before downloading. >> >> So, I am creating a custon node.js module which calls >> download_dependencies.js in the prepublish lifecycle stage file which takes >> care of prompting the user, downloading, unzipping and copying files into >> place. So far so good. >> >> The next step would be to register mxmlc, compc, asjsc, etc. with npm (in >> package.json) and be able to call it from the command line. >> >> For the end user, it would be as simple as: >> >> npm install flexjs >> asjac src/HellowWorld.as >> >> I have been committing my changes to the feature-npm-install branch of the >> flex-utilities repo: >> >> https://github.com/apache/flex-utilities/tree/feature-npm-install/npm-flexjs >> >> Right now, I am working on getting the Falcon dependencies working (there >> are about a dozen of them) >> >> If there is a better way to do all this, I would love to hear it :-) >> >> Thanks, >> Om >> >> On Tue, Dec 1, 2015 at 4:12 PM, Josh Tynjala <joshtynj...@gmail.com> >> wrote: >> >>> I saw Om mention Node.js support in another thread. >>> >>> On Tue, Dec 1, 2015 at 3:38 PM, OmPrakash Muppirala < >> bigosma...@gmail.com> >>> wrote: >>> >>>> Right now, I am working on node.js support for FlexJS. >>> >>> >>> It's something that I'm very interested in, and I planned to work on this >>> too, once I found some time. Om, can you go into more detail about how >>> you're planning to implement things? I was personally thinking that >>> metadata might be needed to define what should be passed to require() for >>> modules, but I'd love to hear if you have something else in mind, and >> maybe >>> provide you with some additional feedback. >>> >>> - Josh >>> >>