Compare commits

..

168 Commits

Author SHA1 Message Date
Jared Allard 5dc698be9d minor comsetic logging fix. vbump to v0.4.1 2015-08-09 08:42:18 -07:00
Jared Allard 1bf334399b fix second run issues with --flag enabled. better error handling 2015-08-09 08:32:18 -07:00
Jared Allard a30db5fc5d package: finally got around to adding contrib 2015-06-29 10:41:16 -07:00
Jared Allard 77cfcf0da4 retarget 2.3.1 for nexe 2015-06-26 18:36:26 -07:00
Jared Allard d8541a82ac readme: note on output. 2015-06-26 18:30:35 -07:00
Jared Allard 489bd0f0fe exe: fixes #122, implement base nexe package field 2015-06-26 18:27:26 -07:00
Jared Allard a3f30bf783 nexe: vbump / remove devdepends 2015-06-26 15:30:02 -07:00
Jared Allard 61ff0b1052 changelog: maintainer fix 2015-06-19 21:49:15 -07:00
Jared Allard e02d39a6bf manifest: async 0.9.0 => 1.2.1 2015-06-19 21:46:00 -07:00
Jared Allard ca414f03db readme: author update 2015-06-19 21:43:23 -07:00
Jared Allard 4200724316 readme: clairify that all platforms require python 2015-05-31 11:53:07 -07:00
Jared Allard 686f67fac2 readme: clairify building requirements. 2015-05-31 11:50:54 -07:00
RainbowDashDC 494618cca1 nexe: vbump and dependencies. 2015-05-01 13:29:42 -07:00
Jared Allard 86fe200bfd Merge pull request #114 from shivamadhavan/master
Updated version of dependency builtins to 1.0.1 ( inclusion of console to the built in module list )
2015-04-16 21:11:54 -07:00
Shiva Kumar Madhavan c272f52994 Updated version of dependency builtins to 1.0.1 ( inclusion of console to the built in module list ) 2015-04-16 17:17:08 +08:00
Craig Jefferds 93ed48a537 Merge pull request #111 from lahdekorpi/patch-1
Fixed typo in README.md
2015-03-30 08:51:44 -07:00
Toni Lähdekorpi 740e3f441d Fixed typo in README.md 2015-03-30 18:51:18 +03:00
Jared Allard 8204feadaa Add 'readline' not include rule.
For some reason nexe attempts to include readline, this solves it. readline is a bultin of node as of 10
2015-03-20 22:08:31 -07:00
Jared Allard cdf53e133b Update README.md
Fixing a spelling mistake. Ugh.
2015-03-20 10:55:09 -07:00
Jared Allard 65c07d4e4a Update README to show new feature 2015-03-20 09:26:30 -07:00
Jared Allard 4c3443655e Merge pull request #108 from crcn/iojs
Implement io.js support! And a few fixes
2015-03-20 09:20:39 -07:00
RainbowDashDC 6d20d4da22 Fixes #107, implements --framework/-F. Fetchs iojs latest. 2015-03-19 23:50:48 -07:00
RainbowDashDC b72b14b6c3 Initial iojs support. 2015-03-16 10:36:39 -07:00
Jared Allard 9134bcf351 Add waffle.io board label 2015-03-08 20:49:52 -07:00
Christopher Karper 1c0d8d0fc0 Freshened up all dependencies 2015-02-22 21:32:59 -05:00
Christopher Karper a7c3fda721 Updated deps 2015-02-22 15:05:47 -05:00
Christopher Karper 7d75480a6f Renamed relative to absolute 2015-02-21 19:42:04 -05:00
Christopher Karper 67361b27e1 Update README.md
Added myself as a maintainer.
2015-02-21 19:35:17 -05:00
Christopher Karper 3b6f9ff4b7 This was bothering me... 2015-02-21 19:02:16 -05:00
RainbowDashDC 6fcfb10e38 Update changelog for 0.3.6 and 0.3.7 2015-02-21 01:32:20 -05:00
RainbowDashDC 06cab4f43b Publish new version to hopefully fix #103 2015-02-21 01:16:34 -05:00
Craig Jefferds 2cacd8340b Update README.md 2015-02-18 14:18:47 -08:00
Craig Jefferds 0e90ac9f16 Update README.md 2015-02-18 14:18:29 -08:00
Jared Allard efd3f78c9d Merge pull request #102 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md
2015-02-18 13:40:14 -08:00
The Gitter Badger 54967d1ab0 Added Gitter badge 2015-02-18 19:35:28 +00:00
RainbowDashDC bb489a3cb7 Fixes #98 by giving win32 a 100 length progress bar. 2015-02-15 19:38:35 -08:00
Jared Allard 6097c20204 Merge pull request #101 from CKarper/master
Lighter weight way to accomplish the exclusion of the sys module
2015-02-15 15:00:05 -08:00
Christopher Karper 39665a8d5c Lighter weight way to accomplish the exclusion of the sys module 2015-02-15 17:51:05 -05:00
Jared Allard f49ece0c86 Merge pull request #100 from CKarper/master
Stub to ignore require('sys')
2015-02-15 12:57:05 -08:00
Christopher Karper 5aca22d28e This handles embedding 'bin' scripts with shebang interpreter directives at the start 2015-02-15 15:02:58 -05:00
Christopher Karper e79b0fb23e Stub to ignore require('sys') 2015-02-15 14:52:40 -05:00
RainbowDashDC cac698609c V bump to solve critical error. 2015-02-15 11:10:34 -08:00
RainbowDashDC b040337a94 Fixes #99, resolves #97 by warning on missing file. New examples. New log functions 2015-02-15 11:05:24 -08:00
Jared Allard 06d7730802 Merge pull request #96 from CKarper/patch-1
Support .json extensions in require() resolution
2015-02-15 07:39:13 -08:00
Christopher Karper ad4da1d193 Support .json extensions in require() resolution
Embarrassingly simple fix.  Added .json to the list of extensions to search when a require with no extension is found.  

This resolves #57
2015-02-15 00:33:28 -05:00
RainbowDashDC 5927b45e70 Add changelog.md, add resourceFiles to example, MIT-LICENSE.txt => LICENSE.txt 2015-02-14 19:53:30 -08:00
RainbowDashDC e4155c8fed Version bump 0.3.5, update depends 2015-02-14 09:44:49 -08:00
RainbowDashDC e91f5b52af Add example, fix outdated examples 2015-02-14 01:57:54 -08:00
RainbowDashDC 3b1d5a9fe1 Modify readme, implement cross-plat --python <loc> closes #94 2015-02-14 01:50:32 -08:00
Jared Allard 3ac298fe4f Merge pull request #95 from LorenzGardner/master
Make process.argv consistent in the child fork case
2015-02-09 17:46:51 -08:00
Lorenz Gardner 229f0516c6 Merge branch 'master' of https://github.com/LorenzGardner/nexe 2015-02-09 16:06:29 -06:00
Lorenz Gardner 29d5f6aaeb Make process.argv consistent in the child fork cas
(argv.[0] must = the executable)
2015-02-09 16:05:09 -06:00
LorenzGardner 174599df30 Merge pull request #2 from crcn/master
Pull in changes to master
2015-02-09 15:56:29 -06:00
Jared Allard 3ca6bbbda2 Merge pull request #93 from LorenzGardner/embedFiles
Embed files
2015-01-31 18:56:18 -08:00
Lorenz Gardner 97dbd37068 Add support for embedded files. 2015-01-06 19:05:01 -06:00
Lorenz Gardner b615e125c0 Make the example code demonstrate forked process and dynamic require 2015-01-05 17:58:57 -06:00
LorenzGardner c34f6719b5 Merge pull request #1 from crcn/master
update
2014-12-30 12:07:37 -06:00
Craig Jefferds 2342fe6fdd Merge pull request #92 from LorenzGardner/child.fork
Add child_process.fork support.
2014-12-23 19:59:18 -03:00
LorenzGardner 333cc697c3 update read me mentioning usage of child_process.fork 2014-12-23 12:16:49 -06:00
Lorenz Gardner ece4b2d62a Add child_process.fork support. 2014-12-23 12:01:33 -06:00
Craig Jefferds ba62973dca Merge pull request #88 from LorenzGardner/master
Add support for JSON files, and __dirname
2014-12-19 16:05:25 -08:00
LorenzGardner 9b5892e6ad clarify workaround for native module support 2014-12-19 14:23:40 -06:00
Lorenz Gardner f7ad9a8e83 It actually makes way more sense for __driname to be exectuable dir rather
than the cwd.
2014-12-18 18:02:48 -06:00
LorenzGardner 7c1331bed8 Update README.md
update the readme to explain how to workaround the limitations (not supporting dynamic require statements and lack of native module support the pseudo support of __dirname)
2014-12-18 17:46:55 -06:00
Lorenz Gardner e55dacf8c8 Merge branch 'JSON-Support'
Conflicts:
	lib/bundle.js
2014-12-18 17:02:29 -06:00
Lorenz Gardner ec79ff85d4 add __dirname support 2014-12-17 18:52:04 -06:00
Lorenz Gardner 99a8cbe9b3 Add JSON support for require statments. 2014-12-17 13:09:00 -06:00
LorenzIndus f458298ffb update version of builtins in deps
Get the fix they did to include the "constants" builtin module.
2014-12-17 08:48:01 -06:00
Craig Jefferds c3fa94a2e5 Merge pull request #83 from rknell/patch-1
Update README.md
2014-11-04 14:41:23 -08:00
rknell 961f72b1d9 Update README.md
Adding missing comma to example
2014-11-05 07:57:53 +10:00
Craig Jefferds d91d91fc2b Merge pull request #82 from RainbowDashDC/master
Prevent Windows Paths from causing issues.
2014-10-27 18:21:34 -07:00
Jared Allard 273bfa3e4d Prevent Windows Paths from causing issues. 2014-10-27 15:14:55 -07:00
Craig Condon 31b01469c7 v bump 2014-10-10 09:23:51 -07:00
Craig Condon b94d0c3719 Merge branch 'master' of github.com:crcn/nexe 2014-10-10 09:23:31 -07:00
Craig Condon 275a7b025b fix issue loading native modules 2014-10-10 09:23:20 -07:00
Craig Jefferds 71d7b97736 Update README.md 2014-09-19 12:09:10 -07:00
Craig Jefferds faf0a85b36 Merge pull request #78 from tm1000/patch-1
Update README.md
2014-09-16 11:31:11 -07:00
Craig Jefferds 56578c09b1 Merge pull request #79 from tm1000/patch-2
Remove all non-ascii code from external sources
2014-09-16 11:31:01 -07:00
Andrew Nagy 6ad1ec436c Remove all non-ascii code from external sources
Remove all non-ascii code from external sources
2014-09-16 10:32:45 -07:00
Andrew Nagy 62461dbc41 Update README.md
Fix the documentation :-)
2014-09-12 16:14:04 -07:00
Craig Jefferds 7f34aa8854 Merge pull request #74 from caffeinewriter/replace-yargs
Replace optimist with yargs
2014-08-29 19:13:00 -07:00
Brandon Anzaldi 76072f6df9 Replace optimist with yargs in nexe bin 2014-08-29 18:44:52 -07:00
Brandon Anzaldi 83daa5553b Replace Optimist with Yargs in Package.json 2014-08-29 18:43:06 -07:00
Craig Condon ff09ef6755 cleanup 2014-08-10 23:46:38 -07:00
Craig Condon 85c8831248 include all node.js builtins 2014-08-10 23:32:01 -07:00
Craig Condon 3d2ae606ef v bump 2014-07-30 12:22:50 -07:00
Craig Condon d4f27aea7f filter http 2014-07-30 12:22:37 -07:00
Craig Condon 87abd1a295 remove commented out code 2014-07-30 11:38:16 -07:00
Craig Condon 9fd462da2f v bump 2014-07-30 11:37:20 -07:00
Craig Condon 60849404a2 remove sardines - move into nexe. Use bundle.js 2014-07-30 11:37:05 -07:00
Craig Condon 00fa37fff0 start on using browserify 2014-07-30 11:12:20 -07:00
Craig Condon 270350fda6 fix #48 - ability to just run ----> bundle /Users/craig/Developer/Public/nexe/lib/index.js
unable to include script /Users/craig/Developer/Public/nexe/lib/exe.js from /Users/craig/Developer/Public/nexe/lib/index.js, Error: Cannot find module 'nexe'
    at Function.module.exports [as sync] (/Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/node_modules/resolve/lib/sync.js:32:11)
    at resolvePath (/Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/lib/pathInfo.js:135:20)
    at self.getPathInfo (/Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/lib/pathInfo.js:88:24)
    at /Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/lib/analyzeDeps.js:324:13
    at /Users/craig/Developer/Public/nexe/node_modules/async/lib/async.js:111:13
    at Array.forEach (native)
    at _each (/Users/craig/Developer/Public/nexe/node_modules/async/lib/async.js:32:24)
    at Object.async.each (/Users/craig/Developer/Public/nexe/node_modules/async/lib/async.js:110:9)
    at scanRequired (/Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/lib/analyzeDeps.js:321:9)
    at Function.on.success.deps.forEach.dep.source (/Users/craig/Developer/Public/nexe/node_modules/sardines/node_modules/amdify/lib/analyzeDeps.js:245:5) in cwd. Resolves package.json main script
2014-05-28 10:47:52 -07:00
Craig Condon dd2aa5a831 Merge pull request #55 from fritx/patch-1
Update README.md
2014-05-28 10:28:08 -07:00
Fritz Lin afc7140b6b Update README.md
Better style with Code Usage in README.md
2014-05-28 22:02:28 +08:00
Craig Condon 1d47091304 v bump 2014-05-13 11:42:44 -07:00
Craig Condon 36bbdd4aa9 Merge pull request #52 from jhbruhn/master
Windows support
2014-05-12 14:40:28 -07:00
Jan-Henrik e73804a4dd Added Windows support to Readme 2014-05-12 20:33:04 +02:00
Jan-Henrik bd1152357e Added Windows Support using vcbuild.bat 2014-05-12 20:29:02 +02:00
Craig Condon c53f229848 added progress to package.json 2014-03-06 11:28:00 -08:00
Craig Condon 3cb81249d8 Merge pull request #46 from northshorenetworks/master
Updated README.md
2014-02-28 19:43:16 -08:00
Adam Snodgrass 518fbc7280 Updated README.md 2014-02-28 21:40:59 -06:00
Craig Condon dd5607886a Merge pull request #45 from northshorenetworks/master
Remove duplicate _log definition in monkeypatch.js
2014-02-28 19:39:44 -08:00
Adam Snodgrass 666774b5b5 Remove duplicate _log definition 2014-02-28 21:35:56 -06:00
Adam Snodgrass 3f75ae462e Merge pull request #2 from crcn/master
Pull in crcn/nexe master changes
2014-02-28 21:33:12 -06:00
Craig Condon dacb31fd67 Merge pull request #44 from northshorenetworks/master
Add option to pass through CLI flags but ignore node and v8 flags
2014-02-28 19:31:00 -08:00
Adam Snodgrass d4e62c668e Add option to disable node and v8 flags and pass through app flags 2014-02-28 21:16:38 -06:00
Craig Condon b267d9ba41 fix typo 2014-02-28 19:01:16 -08:00
Adam Snodgrass 75932723ac Added progress to package.json dependencies; Defined _log in monkeypatch.js 2014-02-28 18:54:38 -06:00
Adam Snodgrass 28442e6714 Merge pull request #1 from crcn/master
Pull in crcn/nexe master changes
2014-02-28 18:14:51 -06:00
Craig Condon 9bb3b76a65 remove old file 2014-02-28 10:46:43 -08:00
Craig Condon 6702ce326a resolve merge conflict 2014-02-28 10:40:07 -08:00
Craig Condon 27075a778d move utils to their own file 2014-02-28 10:39:13 -08:00
Craig Condon 368195be77 Update README.md 2014-02-28 10:33:18 -08:00
Craig Condon b11ce7540c Update README.md 2014-02-28 10:23:52 -08:00
Craig Condon 069c910b7b Update README.md 2014-02-28 10:23:40 -08:00
Craig Condon 934c7bb3d5 Update README.md 2014-02-28 10:23:04 -08:00
Craig Condon 8c8a1eddd7 Update README.md 2014-02-28 10:21:27 -08:00
Craig Condon 3eea6784dd Update README.md 2014-02-28 10:21:17 -08:00
Craig Condon cef44e9b77 Update README.md 2014-02-28 10:20:53 -08:00
Craig Condon b6f555c223 Merge pull request #42 from northshorenetworks/master
Add platform detection for openbsd & freebsd compatibility
2014-02-28 10:17:06 -08:00
Adam Snodgrass 87cacafd3e Add platform detection for openbsd & freebsd compatibility 2014-02-27 23:08:33 -08:00
Craig Condon 9caa365a3e Merge branch 'master' of github.com:crcn/nexe 2014-02-27 16:49:56 -08:00
Craig Condon e7e80f5a2c refactor 2014-02-27 16:49:35 -08:00
Craig Condon 4284c399dd Merge pull request #36 from tallesl/issue35
Solves #35
2013-12-12 22:18:07 -08:00
Talles L 89eeeda575 Solves #35 2013-12-13 03:25:03 -02:00
Craig Condon 3b1b82dc40 cleanup 2013-10-14 10:40:46 -07:00
Craig Condon a9a97fefe1 download latest version 2013-10-14 10:29:35 -07:00
Craig Condon 12a7069a32 v bump 2013-10-14 10:26:47 -07:00
Craig Condon 533ed8c500 Merge branch 'master' of github.com:crcn/nexe 2013-10-14 10:25:57 -07:00
Craig Condon 875d6d0ff7 update node version 2013-10-14 10:25:46 -07:00
Craig Condon ea2cfdf5ee Merge pull request #32 from samyakbhuta/master
Installing 'nexe' globally.
2013-10-14 10:22:52 -07:00
Samyak Bhuta 60ebde86cc Added preference for global install. 2013-10-14 18:47:33 +05:30
Samyak Bhuta d927887355 'nexe', can be installed globally. 2013-10-14 16:28:08 +05:30
Craig Condon 04280a3016 Merge pull request #29 from alexwhitman/node-argv
Unshift 'node' onto process.argv
2013-08-18 10:36:51 -07:00
Alex Whitman 3c084b9573 Unshift 'node' onto process.argv
The node executable is the first value in argv. This was missing after
compiling.
2013-08-18 18:16:23 +01:00
Craig Condon 708851cc40 Merge pull request #28 from alexwhitman/fixup
Linting, spawning and temp directory
2013-08-17 08:37:59 -07:00
Alex Whitman 2214dccd4a Add temp option to README 2013-08-17 12:40:00 +01:00
Alex Whitman ca9fced819 Add -t|--temp option to specify location for node.js sources 2013-08-17 12:04:38 +01:00
Alex Whitman 684b285217 Rewrite configure/make spawning 2013-08-17 11:36:03 +01:00
Alex Whitman 1dc6243b75 Fix up linting warnings
- Mix of tabs and spaces
- Trailing whitepsace
- Missing semi-colons
2013-08-17 10:31:55 +01:00
Craig Condon f1a8a7269f fix #26 - should resolve to absolute path unless / is the first character 2013-07-26 13:40:54 -07:00
Craig Condon 4e8830365e added mit license 2013-06-04 14:32:26 -07:00
Craig Condon 34e6f79096 update readme 2013-04-29 12:41:14 -07:00
Craig Condon e58e22a329 updated example 2013-04-09 13:52:47 -07:00
Craig Condon 4866e04c13 replace browserify with sardines 2013-04-09 13:37:45 -07:00
Craig Condon bedcdfe26f v bump 2013-02-27 11:27:10 -08:00
Craig Condon 5fe8618236 added ability to use -h or --help for help menu 2013-02-27 11:26:44 -08:00
Craig Condon 127377a92b properly parse relative path 2013-02-01 11:39:52 -08:00
Craig Condon d6a083778a cleanup 2013-02-01 11:39:32 -08:00
Craig Condon a52eae6665 Merge branch 'master' of github.com:crcn/nexe 2013-02-01 11:37:03 -08:00
Craig Condon 75ecf22ba9 properly parse relative path 2013-02-01 11:36:47 -08:00
Craig Condon 7f444e93de Update README.md 2013-02-01 11:30:47 -08:00
Craig Condon 818da103a8 added dependency 2013-01-31 12:19:14 -08:00
Craig Condon b565aaafc0 Update README.md 2012-12-02 12:08:10 -06:00
Craig Condon 67282e2506 remove node modules 2012-11-30 20:17:44 -06:00
Craig Condon 3c432a0d3a cleanup 2012-11-30 20:16:17 -06:00
Craig Condon a831244c3d finally works 2012-11-30 20:12:56 -06:00
Craig Condon ad5532eaad finally works 2012-11-30 20:11:55 -06:00
Craig Condon 8b03984ca8 fix package repo 2012-02-17 14:54:58 -06:00
Craig Condon 953d57240f update pkg 2011-11-30 12:55:16 -06:00
Craig Condon dfb751ca12 updated readme 2011-11-26 17:34:11 -06:00
Craig Condon 0813ef0f67 typo 2011-11-26 17:30:50 -06:00
Craig Condon 1e12cad040 can build node.js file from cwd now 2011-11-26 17:30:13 -06:00
Craig Condon 015b60ee24 can build node.js file from cwd now 2011-11-26 17:24:25 -06:00
Craig Condon 66d3454129 updated readme 2011-11-26 17:03:30 -06:00
Craig Condon b385069ebb updated readme 2011-11-26 17:03:08 -06:00
Craig Condon 51879ed636 updated readme 2011-11-26 17:01:47 -06:00
Craig Condon c018684658 ability to build executables 2011-11-26 17:00:12 -06:00
26 changed files with 330 additions and 443 deletions
+4
View File
@@ -0,0 +1,4 @@
[commands]
proj = subl .
.DS_Store
+2 -5
View File
@@ -5,8 +5,5 @@ src
nexe.exe
nexe
npm-debug.log
test/**/src
test/**/out.nex
test/**/test.nex
test/**/tmp
test/**/node_modules
examples/**/src
examples/**/out.nex
View File
+15 -24
View File
@@ -1,7 +1,7 @@
### Nexe
[![Join the chat at https://gitter.im/crcn/nexe](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jaredallard/nexe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Dependency Status](https://david-dm.org/jaredallard/nexe.svg)](https://david-dm.org/crcn/nexe)
[![Stories in Ready](https://badge.waffle.io/jaredallard/nexe.svg?label=ready&title=Ready)](http://waffle.io/jaredallard/nexe)
[![Join the chat at https://gitter.im/crcn/nexe](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/crcn/nexe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Dependency Status](https://david-dm.org/crcn/nexe.svg)](https://david-dm.org/crcn/nexe)
[![Stories in Ready](https://badge.waffle.io/crcn/nexe.svg?label=ready&title=Ready)](http://waffle.io/crcn/nexe)
Nexe is a command-line utility that compiles your Node.js application into a single executable file.
@@ -134,23 +134,16 @@ Options:
var nexe = require('nexe');
nexe.compile({
input: 'input.js', // where the input file is
output: 'path/to/bin', // where to output the compiled binary
nodeVersion: '5.5.0', // node version
nodeTempDir: 'src', // where to store node source.
nodeConfigureArgs: ['opt', 'val'], // for all your configure arg needs.
nodeMakeArgs: ["-j", "4"], // when you want to control the make process.
python: 'path/to/python', // for non-standard python setups. Or python 3.x forced ones.
resourceFiles: [ 'path/to/a/file' ], // array of files to embed.
flags: true, // use this for applications that need command line flags.
jsFlags: "--use_strict", // v8 flags
framework: "node" // node, nodejs, or iojs
input: 'input.js',
output: 'path/to/bin',
nodeVersion: '0.12.5',
nodeTempDir: 'src',
python: 'path/to/python',
resourceFiles: [ 'path/to/a/file' ],
flags: true,
framework: "nodejs"
}, function(err) {
if(err) {
return console.log(err);
}
// do whatever
console.log(err);
});
```
@@ -160,15 +153,14 @@ nexe.compile({
As of 0.4.0 you can now embed nexe options into package.json. Note that this Format
is still in works, so it is likely to change.
```json
```
"nexe": {
"input": "./bin/nexe",
"output": "nexe^$",
"temp": "src",
"runtime": {
"framework": "node",
"version": "5.5.0",
"js-flags": "--use_strict",
"framework": "iojs",
"version": "2.3.1",
"ignoreFlags": true
}
}
@@ -177,10 +169,9 @@ is still in works, so it is likely to change.
Notes:
* output: can use ^$ for platform specific file extension
* js-flags: this is also known as v8 flags, and supports *all* v8 flags.
## Maintainers
* __Jared Allard__ ([@jaredallard](https://github.com/jaredallard)) &lt;[jaredallard@outlook.com](mailto:jaredallard@outlook.com)&gt; (Active)
* __Christopher Karper__ ([@ckarper](https://github.com/CKarper)) &lt;[Christopher.Karper@gmail.com](mailto:Christopher.Karper@gmail.com)&gt; (Active)
* __Craig Condon__ ([@crcn](https://github.com/crcn)) &lt;[craig.j.condon@gmail.com](mailto:craig.j.condon@gmail.com)&gt; (Old Project Owner)
* __Craig Jefferds__ ([@crcn](https://github.com/crcn)) &lt;[craig.j.condon@gmail.com](mailto:craig.j.condon@gmail.com)&gt; (Not Active)
+3 -3
View File
@@ -63,7 +63,7 @@ if(argv.h || argv.help) {
**/
function toAbsolute(pt) {
if(pt.substr(0, 1) == "/") return pt;
if(pt.substr(1, 3) == ":/") return pt; // for windows "c:/"
if(pt.substr(1, 3) == ":/") return pt; // for windows "c:/"
return path.join(process.cwd(), pt);
}
@@ -71,7 +71,7 @@ if(fs.lstatSync(argv.i).isDirectory()) {
opts = nexe.package(path.join(argv.i, "package.json"), argv);
nexe.compile(opts, function(error) {
if(error) {
return console.log(error.message);
console.log(error.message);
}
});
} else {
@@ -89,7 +89,7 @@ if(fs.lstatSync(argv.i).isDirectory()) {
},
function(error) {
if(error) {
return console.log(error.message);
console.log(error.message);
}
}
);
+1
View File
@@ -0,0 +1 @@
console.log("hello browser!");
+19
View File
@@ -0,0 +1,19 @@
var nexe = require('../..');
nexe.compile(
{
input: "./index.js",
output: "./out.nex",
nodeVersion: "3.0.0",
framework: "iojs",
nodeTempDir: "src",
python: "python",
flags: true,
resourceFiles: ["./message.txt"]
},
function (err) {
if (err) {
console.log(err);
}
}
);
+1
View File
@@ -0,0 +1 @@
Hello World!!!
+23
View File
@@ -0,0 +1,23 @@
var http = require("http"),
fs = require("fs"),
path = require("path"),
nexeres = require("nexeres"),
childProc = require("child_process"),
port = 1337;
//Fork a new process to execute the broser.js
childProc.fork(path.join(__dirname, "browser.js"));
if (false) {
require("./browser.js"); //force the bundler to include the .js file
}
//start a web server on specified port (or default if not given)
console.log("started HTTP server on port %d", port = Number(process.argv.concat().pop()) || port);
http.createServer(function(req, res) {
//return the embeded file in response to any request
res.write(nexeres.get("message.txt"));
res.end();
}).listen(port);
+1
View File
@@ -0,0 +1 @@
hello world!
+4
View File
@@ -0,0 +1,4 @@
{
"main": "./index.js",
"browser": "./index.js"
}
+1
View File
@@ -0,0 +1 @@
console.log("hello browser!");
+18
View File
@@ -0,0 +1,18 @@
var nexe = require('../..');
nexe.compile(
{
input: "./index.js",
output: "./out.nex",
nodeVersion: "3.0.0",
nodeTempDir: "./src",
framework: "iojs",
python: 'python',
flags: true
},
function (err) {
if (err) {
console.log(err);
}
}
);
+23
View File
@@ -0,0 +1,23 @@
var http = require("http"),
fs = require("fs"),
path = require("path"),
nexeres = require("nexeres"),
childProc = require("child_process"),
port = 1337;
//Fork a new process to execute the broser.js
childProc.fork(path.join(__dirname, "browser.js"));
if (false) {
require("./browser.js"); //force the bundler to include the .js file
}
//start a web server on specified port (or default if not given)
console.log("started HTTP server on port %d", port = Number(process.argv.concat().pop()) || port);
http.createServer(function(req, res) {
//return the embeded file in response to any request
res.write("Hello, world!");
res.end();
}).listen(port);
+1
View File
@@ -0,0 +1 @@
hello world!
+4
View File
@@ -0,0 +1,4 @@
{
"main": "./index.js",
"browser": "./index.js"
}
+145 -68
View File
@@ -1,6 +1,5 @@
/**
* Copyright (c) 2013 Craig Condon
* Copyright (c) 2015-2016 Jared Allard
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -22,87 +21,165 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**/
var mdeps = require("module-deps"),
through = require("through"),
async = require("async"),
builtins = require("builtins");
var mdeps = require("module-deps"),
path = require("path"),
spawn = require('child_process').spawn,
fs = require("fs"),
async = require("async"),
browserify = require('browserify'),
builtins = require("builtins"),
_log = require("./log");
var _log = require("./log");
/**
* User browserify to create a "packed" file.
*
* @param {String} input - input file
* @param {String} nc - node compiler dir
* @param {Function} complete - next function to call (async)
**/
function bundle (input, nc, complete) {
var bundlePath = path.join(nc, "lib", "nexe.js");
var ws = fs.createWriteStream(bundlePath);
var browserifyExec;
function bundle (input, complete) {
var browserifyLocations = [ // TODO: Do this programattically.
'This is to ignore the 0 location.',
path.join(__dirname, '../', 'node_modules/browserify/bin/cmd.js'),
path.join(__dirname, '../../', 'node_modules/browserify/bin/cmd.js'),
path.join(__dirname, '../../../', 'node_modules/browserify/bin/cmd.js'),
path.join(__dirname, '../../../../', 'node_modules/browserify/bin/cmd.js')
]
async.waterfall([
for(var i = 0; i !== (browserifyLocations.length-1); i++) {
if(fs.existsSync(browserifyLocations[i])) {
browserifyExec = browserifyLocations[i];
_log('found browserify in', browserifyExec);
break;
}
}
/**
* first we resolve all of the deps
*/
var proc = spawn('node', [browserifyExec, '--node', input ]);
function resolveDeps (next) {
proc.stdout.pipe(ws);
proc.on('error', function(err) {
console.error(err.toString('ascii'));
_log('error', 'Failed to invoke browserify');
process.exit(1);
})
var deps = [];
proc.stderr.on('data', function(data) {
console.error(data.toString('ascii'));
if(!fs.existsSync(input)) {
_log('error', 'Your input file doesn\'t exist!');
}
_log('error', 'Browserify failed to launch');
process.exit(1);
});
proc.on('close', function(code) {
_log("Browserify finished");
})
var md = mdeps({
xtransform: function (tr, file) {
ws.on('error', function(err) {
console.log(err);
_log('error', 'Failed to save stdout to disk');
process.exit(1);
})
var buffer = [];
console.log(tr);
ws.on('close', function() {
var source = fs.readFileSync(bundlePath, 'utf8');
source = source.replace(/[^\x00-\x7F]/g, "");
// write the source modified to nexe.js
fs.writeFile(bundlePath, source, 'utf8', function(err) {
if(err) {
_log('error', 'failed to save source');
process.exit(1);
return through(write, end);
var self = this;
function write (chunk) {
buffer.push(chunk.toString());
// console.log(chunk.toString(""))
console.log(tr);
}
function end() {
var content = buffer.join("");
// console.log(content);
/*
// TODO add uglify flag
var source = uglify.parse(content, {
strict: false
});
source.figure_out_scope();
source.compute_char_frequency();
source.mangle_names();
// TODO - production
content = source.print_to_string({
ascii_only: true,
quote_keys: true
});*/
this.queue(content);
this.queue(null);
}
},
filter: function (id) {
if ([ 'nexeres', 'sys', 'readline' ].indexOf(id) > -1) { return false; }
return !~builtins.indexOf(id);
},
extensions: [ '.js', '.json' ],
ignoreMissing: true
});
/** event for missing packages, fixes conditional requires **/
md.on('missing', function(id, parent) {
_log("warn", "couldn't find require '" + id + "', errors may occur.");
});
md.pipe(through(function (chunk) {
deps.push(chunk);
}, function () {
next(null, deps);
}));
md.end({ file: input })
},
function bundleScript (deps, next) {
var buffer = [loader.toString()];
var dbuffer = [];
for (var i = deps.length; i--;) {
var dep = deps[i];
var req = "function (require, module, exports, __dirname) { \n"
if (dep.id.toLowerCase().indexOf(".json", dep.id.length - 5) !== -1) {
//this is the result of require("someFile.json"), so we need to export it from the function
req += "module.exports = "
}
if ((/^\#\!/).test(dep.source)) {
dep.source = '//' + dep.source;
}
req += dep.source + "}";
dbuffer.push(JSON.stringify(dep.id) + ": ["+req+", "+!!dep.entry+", "+JSON.stringify(dep.deps)+"]")
}
complete();
});
});
buffer = ["(" + loader.toString() + ").call(null, {"+dbuffer.join(",")+"}," + JSON.stringify(deps[deps.length-1].id) + ")"].toString();
next(null, buffer);
}
], complete)
}
var loader = function (deps, key) {
var pathModule = global.require("path");
var darr = [];
var dir = global.require("path").dirname(process.execPath);
var argv3 = process.argv[3];
if (argv3) {
argv3 = pathModule.relative(pathModule.dirname(process.execPath), argv3);
argv3 = pathModule.resolve(pathModule.dirname(key), argv3);
}
if (process.argv[2] == "--child_process" && deps[argv3]) {
//we've been forked and should run the module specified by argv3[3] instead of the start up module
key = argv3;
process.argv.splice(2, 2); //restore the argv to [0] = executable, [1] = nexejs
}
else if (process.argv[2] == "--child_process") {
//fork called, but for a module not bundled.
argv3 = process.argv[3];
process.argv.splice(1, 2); //restore the argv to [0] = executable, [1] = script
global.require(argv3);
return;
}
darr.push(deps[key]); //start up module.
function initModule (dep) {
if (dep.module) return dep.module.exports;
dep.module = { exports: {} };
dep[0](function (path) {
var rdep = deps[dep[2][path]];
var exports = rdep ? rdep.module ? rdep.module.exports : initModule(rdep) : global.require(path);
return exports;
}, dep.module, dep.module.exports, dir);
return dep.module.exports;
}
//run the startup module
darr.forEach(initModule);
return darr.filter(function (dep) {
return dep[1];
}).map(function (dep) {
return dep.module || {};
}).pop();
}
module.exports = bundle;
+1 -2
View File
@@ -1,6 +1,5 @@
/**
* Copyright (c) 2013 Craig Condon
* Copyright (c) 2015-2016 Jared Allard
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -22,7 +21,7 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**/
var path = require("path"),
fs = require("fs");
+48 -253
View File
@@ -1,6 +1,5 @@
/**
* Copyright (c) 2013 Craig Condon
* Copyright (c) 2015-2016 Jared Allard
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -28,7 +27,6 @@ var async = require("async"),
request = require("request"),
path = require("path"),
fs = require("fs"),
colors = require('colors'),
ncp = require("ncp").ncp,
ProgressBar = require("progress"),
child_process = require("child_process"),
@@ -53,8 +51,6 @@ var option_list = [
"nodeTempDir",
"flags",
"framework",
"nodeConfigureArgs",
"nodeMakeArgs",
"nodeVersion"
]
@@ -77,12 +73,12 @@ exports.compile = function (options, complete) {
process.exit()
}
/* option_list.forEach(function(v) {
option_list.forEach(function(v) {
if(options[v] === undefined) {
_log("error", "option "+v+" was empty")
process.exit();
}
}); */
});
/**
* Have we been given a custom flag for python executable?
@@ -132,7 +128,7 @@ exports.compile = function (options, complete) {
// continue down along the async road
next();
});
})
} else {
next();
}
@@ -142,7 +138,7 @@ exports.compile = function (options, complete) {
* first download node
*/
function downloadNode (next) {
_downloadNode(version, options.nodeTempDir, options.nodeConfigureArgs, options.nodeMakeArgs, next);
_downloadNode(version, options.nodeTempDir, next);
},
/**
@@ -152,7 +148,21 @@ exports.compile = function (options, complete) {
function combineProject (nc, next) {
nodeCompiler = nc;
_log("bundle %s", options.input);
bundle(options.input, nodeCompiler.dir, next);
bundle(options.input, next);
},
/**
* write the bundle to the lib directory of the target node version
*/
function writeBundle (source, next) {
bundlePath = path.join(nodeCompiler.dir, "lib", "nexe.js");
_log("bundle -> %s", bundlePath);
//Remove all non-ascii code from sources
source = source.replace(/[^\x00-\x7F]/g, "");
// same path as all the other JS files
fs.writeFile(bundlePath, source, next);
},
function embedResources(next) {
@@ -186,45 +196,18 @@ exports.compile = function (options, complete) {
}
},
function monkeyPatchv8FlagsCc (next) {
if(options.jsFlags) {
return _monkeyPatchv8FlagsCc(nodeCompiler, options, next);
}
return next();
},
/**
* monkeypatch child_process.js so nexejs knows when it is a forked process
*/
function monkeyPatchChildProc(next) {
_monkeyPatchChildProcess(nodeCompiler, next);
},
/**
* If an old compiled executable exists in the Release directory, delete it.
* This lets us see if the build failed by checking the existence of this file later.
*/
function cleanUpOldExecutable (next) {
fs.unlink(nodeCompiler.releasePath, function (err) {
if (err) {
if (err.code === "ENOENT") {
next();
} else {
throw err;
}
} else {
next();
}
});
},
/**
* monkeypatch child_process.js so nexejs knows when it is a forked process
*/
function monkeyPatchChildProc(next) {
_monkeyPatchChildProcess(nodeCompiler, next);
},
/**
* compile the node application
*/
function makeExecutable (next) {
function makeExe (next) {
if(isWin) {
_log("vcbuild [make stage]");
} else {
@@ -241,25 +224,6 @@ exports.compile = function (options, complete) {
mkdirp(path.dirname(options.output), function(){ next(); });
},
/**
* Verify that the executable was compiled successfully
*/
function checkThatExecutableExists (next) {
fs.exists(nodeCompiler.releasePath, function (exists) {
if (!exists) {
_log("error",
"The release executable has not been generated. " +
"This indicates a failure in the build process. " +
"There is likely additional information above."
);
process.exit(1);
} else {
next();
}
});
},
/**
* Copy the compilied binary to the output specified.
*/
@@ -287,13 +251,14 @@ exports.compile = function (options, complete) {
* @param {function} complete, callback
*/
function _downloadNode(version, directory, nodeConfigureArgs, nodeMakeArgs, complete) {
function _downloadNode (version, directory, complete) {
var nodeFileDir = path.resolve(path.join(directory, framework, version)), // fixes #107, was process.cwd(), + rest.
nodeFilePath = path.resolve(path.join(nodeFileDir, framework + "-" + version + ".tar.gz"));
// might already be downloaded, and unzipped
if (_getNodeCompiler(nodeFileDir, nodeConfigureArgs, nodeMakeArgs, complete)) {
if (_getNodeCompiler(nodeFileDir, complete)) {
return;
}
@@ -316,16 +281,11 @@ function _downloadNode(version, directory, nodeConfigureArgs, nodeMakeArgs, comp
function downloadNode (next) {
if (fs.existsSync(nodeFilePath)) return next();
var uri = framework;
if(framework==="node") {
uri = 'nodejs'; // if node, use nodejs uri
} else if(framework === 'nodejs') {
framework = 'node'; // support nodejs, and node, as framework.
}
var type = global.type;
var url, prefix = "https://"+uri+".org/dist";
var url, prefix = "https://"+framework+".org/dist";
// pick which url depending on the version
if(framework==="nodejs") framework = "node"; // cmon node why can't you stay the same
if (version === "latest") {
url = prefix + "/" + framework + "-" + version + ".tar.gz";
@@ -367,11 +327,6 @@ function _downloadNode(version, directory, nodeConfigureArgs, nodeMakeArgs, comp
tar.stderr.pipe(process.stderr);
tar.on("close", function () { next(); })
tar.on("error", function (err) {
console.log(err);
_log("error", "failed to extract the node tar file.");
process.exit(1);
});
}
},
@@ -380,7 +335,7 @@ function _downloadNode(version, directory, nodeConfigureArgs, nodeMakeArgs, comp
*/
function (next, type) {
_getNodeCompiler(nodeFileDir, nodeConfigureArgs, nodeMakeArgs, next, type)
_getNodeCompiler(nodeFileDir, next, type)
},
], complete);
@@ -391,7 +346,7 @@ function _downloadNode(version, directory, nodeConfigureArgs, nodeMakeArgs, comp
* it.
*/
function _getNodeCompiler (nodeFileDir, nodeConfigureArgs, nodeMakeArgs, complete, type) {
function _getNodeCompiler (nodeFileDir, complete, type) {
var dir = _getFirstDirectory(nodeFileDir);
// standard
@@ -437,19 +392,12 @@ function _getNodeCompiler (nodeFileDir, nodeConfigureArgs, nodeMakeArgs, complet
version: path.basename(nodeFileDir),
releasePath: path.join(dir, "out", "Release", binary),
make: function (next) {
var cfg = "./configure",
configure;
var conf = [cfg];
if(isPy !== "python") {
conf = [conf].concat(nodeConfigureArgs);
}
// should work for all use cases now.
configure = spawn(isPy, conf, {
cwd: dir.toString('ascii')
});
var cfg = "./configure", configure;
if(isPy !== "python") {
configure = spawn(isPy, [cfg], { cwd: dir });
} else {
configure = spawn(cfg, [], { cwd: dir });
}
// local function, move to top eventually
function _loop(dir) {
@@ -484,29 +432,6 @@ function _getNodeCompiler (nodeFileDir, nodeConfigureArgs, nodeMakeArgs, complet
configure.stdout.pipe(process.stdout);
configure.stderr.pipe(process.stderr);
// on error
configure.on("error", function(err) {
console.log('Error:', err);
console.log('');
console.log('Details:');
console.log('command =', isPy, cfg, conf_args || '');
console.log('cwd =', dir);
var configure_path = path.join(dir, 'configure');
var contains_configure = fs.existsSync(configure_path);
console.log('cwd contains configure,', (contains_configure ? colors.green('yes') : colors.red('no')));
var configure_size = fs.statSync(configure_path).size;
console.log('configure is non-zero size,', ((configure_size > 0 ) ? colors.green('yes') : colors.red('no')));
_log("error", "failed to launch configure.");
process.exit(1);
});
// when it's finished
configure.on("close", function () {
if(isPy !== "python") {
/**
@@ -519,24 +444,13 @@ function _getNodeCompiler (nodeFileDir, nodeConfigureArgs, nodeMakeArgs, complet
// loop over depends
_loop(dir);
}
if(nodeMakeArgs === undefined) {
nodeMakeArgs = [];
}
var platformMake = "make";
if (os.platform().match(/bsd$/) != null) {
platformMake = "gmake";
}
var make = spawn(platformMake, nodeMakeArgs, { cwd: dir });
var make = spawn(platformMake, [], { cwd: dir });
make.stdout.pipe(process.stdout);
make.stderr.pipe(process.stderr);
make.on("error", function(err) {
console.log(err);
_log("error", "failed to run make.");
process.exit(1);
})
make.on("close", function () {
next();
});
@@ -603,13 +517,7 @@ function _monkeyPatchMainJs (compiler, complete) {
return ~content.indexOf("nexe");
},
function (content, next) {
next(null, content.replace(/\(function\(process\) \{/,'\
(function(process) {\n\
process._eval = \'require("nexe");\';\n\
if (process.argv[1] !== "nexe.js") {\n\
process.argv.splice(1, 0, "nexe.js");\n\
}\n\
'))
next(null, content.replace(/\(function\(process\) \{/,'(function(process) {\n process._eval = \'require("nexe");\';\n process.argv.splice(1, 0, "nexe.js");\n'))
},
complete
);
@@ -626,7 +534,7 @@ function _monkeyPatchChildProcess(compiler, complete) {
return ~content.indexOf("--child_process");
},
function (content, next) {
next(null, content.replace(/return spawn\(/, 'args.unshift("nexe.js", "--child_process");\n return spawn('));
next(null, content.replace(/return spawn\(/, 'args.unshift("--child_process");\n return spawn('));
},
complete
);
@@ -646,7 +554,7 @@ function _monkeyPatchMainCc(compiler, complete) {
function (content, next) {
var lines = content.split('\n');
var endLine = lines.indexOf(' option_end_index = i;'); // pre node 0.11.6 compat
if(endLine !== -1) { // check if it succedded or not.
lines[endLine] = ' option_end_index = 1;';
_log("patched node.cc")
@@ -678,107 +586,6 @@ function _monkeyPatchMainCc(compiler, complete) {
}
/**
* Patch flags.cc from deps/v8/src to use hard-coded flags.
* this function is very closely ready to accept custom injection code.
**/
function _monkeyPatchv8FlagsCc(compiler, options, complete) {
var mainPath = path.join(compiler.dir, "deps/v8/src", "flags.cc");
fs.readFile(mainPath, {encoding: 'utf8'}, function(err, contents) {
if(err) {
return _log('error', 'failed to read', mainPath);
}
// Super simple injection here. Perhaps make it an array at somepoint?
var injection = '\
const char* nexevargs = "{{args}}";\n\
int nexevargslen = strlen(nexevargs);\n\
SetFlagsFromString(nexevargs, nexevargslen);\n\
';
var injectionSplit = injection.split('\n');
var injectionLength = injectionSplit.length;
var contentsSplit = contents.split('\n');
var contentsLength = contentsSplit.length;
var lastInjectionLine = injectionSplit[injectionLength-2];
var lineToInjectAfter = contentsSplit.indexOf(' ComputeFlagListHash();');
var haveWeInjectedBefore = contentsSplit.indexOf(lastInjectionLine);
var lineInjectDifference = contentsLength - lineToInjectAfter;
// support for 0.12.x
if(lineToInjectAfter===-1) {
_log('warn', 'Using an expiramental support patch for 0.12.x');
lineToInjectAfter = contentsSplit.indexOf('#undef FLAG_MODE_DEFINE_IMPLICATIONS');
}
// this is debug, comment out.
// _log('v8 injection is', injectionLength, 'newlines long');
// _log('v8 flags source is', contentsLength, 'newlines long');
// console.log(finalContents)
var finalContents,
dontCombine;
if(lineToInjectAfter !== -1 && haveWeInjectedBefore === -1) {
_log('injecting v8 args c++');
// super debug
// _log('v8 injection determined by', lastInjectionLine);
// _log('v8 inject after line', lineToInjectAfter);
// _log('v8 inject needs to shift', lineInjectDifference, 'amount of lines by', injectionLength);
// compute out the amount of space we'll need in this.
var startShiftLine = contentsLength-1; // minus one to make up for 0 arg line.
var endShiftLine = lineToInjectAfter;
var injectRoom = injectionLength-1;
injectionSplit[0] = injectionSplit[0].replace('{{args}}', options.jsFlags);
for (var i = startShiftLine; i !== endShiftLine; i--) {
contentsSplit[i+injectRoom] = contentsSplit[i];
contentsSplit[i] = '';
}
var injectionPos = 0;
for(var i = 0; i !== injectionLength-1; i++) {
contentsSplit[(lineToInjectAfter+1)+injectionPos] = injectionSplit[injectionPos];
injectionPos++;
}
} else if(lineToInjectAfter !== -1 && haveWeInjectedBefore !== -1) {
_log('re-injecting v8 args');
dontCombine = true;
finalContents = contentsSplit.join('\n');
finalContents = finalContents.replace(/const char\* nexevargs = "[A-Z\-\_]*";/gi,
'const char* nexevargs = "'+options.jsFlags+'";');
} else {
_log('warn', 'failed to find a suitable injection point for v8 args.',
'File a bug report with the node version and log.');
_log('lineToInjectAfter='+lineToInjectAfter, 'haveWeInjectedBefore='+haveWeInjectedBefore);
return process.exit(1);
}
if(!dontCombine) {
finalContents = contentsSplit.join('\n');
}
fs.writeFile(mainPath, finalContents, {encoding: 'utf8'}, function(err) {
if(err) {
_log('error', 'failed to write to', mainPath);
return process.exit(1);
}
return complete();
})
});
}
/**
* Get the first directory of a string.
*/
function _getFirstDirectory (dir) {
@@ -793,7 +600,6 @@ function _getFirstDirectory (dir) {
}
/**
* Log the progress of a request object.
*/
function _logProgress (req) {
@@ -805,7 +611,7 @@ function _logProgress (req) {
complete: "=",
incomplete: " ",
total: len,
width: 100 // just use 100
width: ((isWin) ? 100 : process.stdout.columns - 2) // windows doesn't output colums correctly
});
req.on("data", function (chunk) {
@@ -813,12 +619,6 @@ function _logProgress (req) {
});
});
req.on("error", function(err) {
console.log(err);
_log("error", "failed to download node sources,");
process.exit(1);
});
return req;
}
@@ -827,9 +627,8 @@ function _logProgress (req) {
*
* @param {string} path - path to package.json
* @param {object} options - fallback options
*
*
* @todo implement options overriding package defaults.
* @todo make this much less hackily implemented....
*
* @return {object} nexe.compile options object
**/
@@ -854,13 +653,9 @@ exports.package = function(path, options) {
var obj = {
input: (_package.nexe.input || options.i),
output: (_package.nexe.output || options.o),
flags: (_package.nexe.runtime.ignoreFlags || (options.f || false)),
nodeMakeArgs: (_package.nexe.runtime.nodeMakeArgs || []),
flags: (_package.nexe.runtime.ignoreFlags || options.f),
resourceFiles: (_package.nexe.resourceFiles),
nodeVersion: (_package.nexe.runtime.version || options.r),
nodeConfigureArgs: (_package.nexe.runtime.nodeConfigureArgs || []),
nodeMakeArgs: (_package.nexe.runtime.nodeMakeArgs || []),
jsFlags: (_package.nexe.runtime['js-flags'] || false),
python: (_package.nexe.python || options.p),
nodeTempDir: (_package.nexe.temp || options.t),
framework: (_package.nexe.runtime.framework || options.f)
+2 -3
View File
@@ -1,6 +1,5 @@
/**
* Copyright (c) 2013 Craig Condon
* Copyright (c) 2015-2016 Jared Allard
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -23,8 +22,6 @@
*
**/
var colors = require('colors');
/**
* standard output, takes 3 different types.
* log, error, and warn
@@ -34,6 +31,8 @@ var colors = require('colors');
**/
function _log () {
var colors = require('colors');
var args = Array.prototype.slice.call(arguments, 0),
level = args.shift();
+14 -18
View File
@@ -3,7 +3,7 @@
"name": "nexe",
"description": "create single executables out of your [node/io].js applications",
"license": "MIT",
"version": "1.0.7",
"version": "0.4.1",
"contributors": [
{
"name": "Criag Condon",
@@ -17,38 +17,34 @@
},
"main": "./lib/index.js",
"dependencies": {
"async": "1.5.2",
"browserify": "^13.0.0",
"builtins": "1.0.3",
"colors": "^1.1.2",
"glob": "^6.0.4",
"insert-module-globals": "^7.0.1",
"mkdirp": "^0.5.1",
"module-deps": "^4.0.5",
"async": "1.2.1",
"builtins": "1.0.1",
"colors": "^1.0.3",
"glob": "^5.0.5",
"mkdirp": "^0.5.0",
"module-deps": "^3.6.4",
"ncp": "^2.0.0",
"outcome": "0.0.18",
"progress": "^1.1.8",
"request": "^2.67.0",
"request": "^2.53.0",
"sprintf": "~0.1.5",
"step": "0.0.x",
"tar.gz": "1.0.2",
"yargs": "^3.32.0"
"tar.gz": "0.1.1",
"through": "^2.3.6",
"yargs": "^3.2.1"
},
"nexe": {
"input": "./bin/nexe",
"output": "nexe^$",
"temp": "src",
"runtime": {
"framework": "nodejs",
"version": "5.5.0",
"framework": "iojs",
"version": "2.3.1",
"ignoreFlags": true
}
},
"preferGlobal": true,
"preferGlobal": "true",
"bin": {
"nexe": "./bin/nexe"
},
"devDependencies": {
"nodeunit": "^0.9.1"
}
}
-13
View File
@@ -1,13 +0,0 @@
/**
* Test to verify if we support strict mode (flags)
*
* @author Jared Allard <jaredallard@outlook.com>
* @version 0.0.1
* @license MIT
**/
// "use strict"; w/o --use_strict
var isStrict = (function() { return !this; })();
console.log('test:strict-mode:status =', isStrict);
-15
View File
@@ -1,15 +0,0 @@
{
"name": "flags-test",
"nexe": {
"input": "./index.js",
"output": "test.nex",
"temp": "src",
"runtime": {
"framework": "node",
"version": "0.10.0",
"ignoreFlags": false,
"js-flags": "--use_strict",
"node-args": ""
}
}
}
-23
View File
@@ -1,23 +0,0 @@
"use strict";
var gulp = require('gulp');
var nexe = require('nexe');
gulp.task( "compile", ( callback ) => {
let options = {
input: "index.js",
output: "test.nex",
python: "python",
nodeTempDir: "./tmp",
nodeVersion: "latest",
flags: false,
framework: "nodejs"
};
nexe.compile( options, ( err ) => {
console.log( err );
callback( err );
} );
} );
gulp.task('default', ['compile']);
-1
View File
@@ -1 +0,0 @@
console.log('Hello, world!');
-15
View File
@@ -1,15 +0,0 @@
{
"name": "gulp-test-170",
"version": "0.0.1",
"description": "gulpfile.js issue #170",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Jared Allard <jaredallard@outlook.com>",
"license": "MIT",
"dependencies": {
"gulp": "^3.9.0",
"nexe": "^1.0.5"
}
}