All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Manually create symbolic links for MacOS builds.
- Use
unzipper
to decompress ZIP files.
- Use
tar
to extract tarballs. - Disable
options.nativeAddon
.
- Remove
yauzl-promise
since it does not preserve symlinks on MacOS.
- Use
yauzl-promise
to decompress MacOS build on MacOS platform.
- Native package
unzip
usage.
- Align cache implementation with
nwjs/npm-installer
nw
module can use theoptions.cacheDir
to get cached NW.js binaries.
- Node Native Addon support using GYP. To enable, set
options.nativeAddon
togyp
.
- Managed Manifest mode.
options.ManagedManifest
defaults tofalse
. - If
true
, then firstpackage.json
globbed is parsed as manifest. - If JSON type, object is parsed as manifest.
- If string type, then resolve as file path to manifest.
- Fix FFmpeg decompression.
- Auto generate docs from JSDoc comments.
- Improve TypeScript type definitions.
- Fix get mode.
- Refactor build mode.
- Generate markdown docs from JSDocs.
- Improve debug logging.
- Fixed handling of argv.
- Cache community FFmpeg.
- Move FFmpeg decompress function to relevant location
- Separate download logic for NW.js and FFmpeg.
- Do not copy the first
package.json
encountered to the root ofoptions.outDir
whenoptions.glob
is enabled. This may seem like a breaking change but it is actually reverting incorrect behaviour.
- Some mac environments don't restore symlinks when using compressing lib. Now we will use system
unzip
command to extract zip files
- Handle error during ffmpeg copy on some mac environments
- Move community
ffmpeg
in the correct folder.
- Move community
ffmpeg
in the correct folder.
- Return promise in get mode to await it correctly.
- Conditonally set Icon for Windows build.
- Refactor
get
mode into a single file.
- Set
NSHumanReadableCopyright
property in*.app/Resources/en.lproj/InfoPlist.strings
to update copyright
NSHumanReadableCopyright
fromInfo.plist
- Descriptions and argument types for remaining cli arguments.
- Replace the icon at
nwjs.app/Contents/Resources/app.icns
with the icon atoptions.app.icon
file path.
xattr
package. Thecom.apple.quarantine
flag should be handled by the developer.
- Compress
outDir
tozip
,tar
andtgz
formats. - Specify log level via
options.logLevel
. - Add platform, arch, Node and NW.js info in debug log.
- Add MacOS name, version, description and legal metadata
- Removed redundant
options.app.icon
property (Refer to NW.js docs on how to set icon)
- Refactor
zip
implementation. Usecompressing
instead ofarchiver
package. - If
zip
istrue
or"zip"
, then remove outDir after compression. (This was supposed to be the intented behavior all along).
- Redownload
manifest.json
every time thenwbuild
function is executed. - If
manifest.json
already exists and we are unable to connect to thenwjs.io
domain, then use the existing manifest. - If no
manifest.json
exists in the cache dir, then thevalidate
function will cache this and throw an error - preventing the build.
- Preserve relative symbolic links of NW.js files during build mode
- Rename executable using
options.app.name
value.
- Migrate from
decompress
tocompressing
- Preserve relative symbolic links during build mode
- Do not resolve
options.srcDir
when parsingoptions
object.
- Fix module imports which broke in 04ccd51
- Validation for
options.version
. - Type definition file for
nwbuild
function.
- Set
files
tooptions.srcDir
if glob disabled preventing apackage.json
not found error.
- Glob flag defaulting to true. Currently file globbing is broken and it is recommended to set
glob
to false.
- Fixed
get
mode - Fixed
run
mode - Fixed
build
mode - Updated
get
mode docs
- Parse the first
package.json
file and treat it as the NW.js manifest. Copy it tooutDir/package.nw/package.json
for Linux and Windows andoutDir/nwjs.app/Contents/Resources/app.nw/package.json
for MacOS.
To simplify your workflow, you can pass the path to the package.json
first:
nwbuild ./path/to/package.json ./app/**/* ./node_modules/**/*
Make sure your manifest file's main
property points to a valid file path. In this case it might be:
{
"main": "app/index.html"
}
get
mode to only download NW.js binaries. Example use case: download during Node'spostinstall
hook:
{
"scripts": {
"postinstall": "nwbuild --mode=get --flavor=sdk"
}
}
- Check if NW.js's Node version matches host's Node version
- Fix undefined import for Windows configuration
- Remove false test for run mode.
- Glob file and directory differently.
- MacOS ARM build is no longer behind
beta
version.
- Allow list
https://npmmirror.com/mirrors/nwjs/
andhttps://npm.taobao.org/mirrors/nwjs/
mirrors.
- Do not convert srcDir files to absolute paths.
- Copy files to correct location.
- Resolve path iff file path type is valid.
- MacOS ARM support
- Use (community) prebuilt version of
ffmpeg
if theffmpeg
flag istrue
(defaults tofalse
).
await
platform specific config steps
- Security update
http-cache-semantics
tov4.1.1
.
options.cli
flag to preventnode-glob
from globbing already globbed files and erroring out with apackage.json not found in srcDir file glob patterns
message.
- Copy subdirectories of
options.srDir
in the correct location.
- Run and build demo app in CI.
- Fixed false positives in CI
- Throw errors instead of returning them
- Reject error object instead of exit code
- Flag to check if specific
nw
release is cached. #772
- Create
cacheDir
,outDir
before getting release info. #772
-
Do not throw error if
nwbuild
is ofobject
type. #769 -
Fix
package.json
path forupdateNotifier
. #767
- Warn about loss of permissions if building Linux or MacOS on Windows. 8793d4b
- Fix error when
options.version
islatest
. 33ef184
- CJS support 968f798
- Prevent duplicate globbing of
srcDir
files. 07901c9
- Convert
srcDir
type fromstring[]
tostring
. 1a699af
-
Skip modification of Windows executable if platform is not Windows or Wine is not installed. #739
-
Run mode should only require
srcDir
,version
andflavor
. #718
- Allow user to rename NW executable. #712
- Support for Desktop Entry file. #690
-
Resolve promise in
close
event with respect to compression. #698 -
Check for release info after downloading NW binaries in
cacheDir
. #697
- Fix mac and windows build
nwbuild
function which accidently got removed.
- Update usage docs for
nwbuild
- Refactor download function
- Check for first instance of
package.json
platforms
argument also accepts comma separated (without spaces) values
- Support for multiple file paths
- Fix regex to match
package.json
files only
mode
option which defaults to runnwbuild
functionquiet
option to documentation
- CLI options by matching them to the API
- Remove
Version
fromCFBundleShortVersionString
#576
- Added options
buildType
,macCredits
,macPlist
,zip
,zipOptions
to CLI #575
- Update lint command #575
- Update contributing guide #569
- Switch from TypeScript to JSDocs #568
- Set window icon with
rcedit
#566 - Refactor
checkCache
#565 - Simplify demo
- Refactor
detectCurrentPlatform
#564 - Update dependencies #561 #532
- GitHub Actions for CICD #552
- Support multiple locales on OSX #389
- Pull request and issue template #553
- Dependencies #550
- Documentation #540 #553 #555
- Improve run mode by detecting current platform to prevent downloading additional binaries
- Travis
- AppVeyor
- JSHint
- EditorConfig
- Source platform overrides module into the project instead of it being an extenal dependency. This helped us get rid of a vulnerable lodash version. See nwutils#500
- Add option.winVersionString for accurate process name. See nwutils#459.
- Small platform overrides fix. See https://github.com/nwjs-community/nw-builder/pull/477/files.
- The
bluebird
dependency. We're now using native promises instead.
- If using the package programmatically and it's out of date, a message will be shown (this was always the case for the CLI).
- There is now a README in every directory (with at least a single sentence summarizing the directory) to help with onboarding contributors.
- Some dependencies are updated.
osx32
is removed from the default list of platforms. Thanks to @preaction (PR #439).- An unnecessary
rcedit
dependency is removed.
- For Node 7+ users, you won't see a
os.tmpDir
deprecation warning anymore.
- 2017-05-22
3.2.3
Fix for caching when a version is specified (thanks @piwonesien for the help). - 2017-05-20
3.2.2
Fix: when using thenwbuild
in run mode, the-p
option was ignored and the current platform was always used. - 2017-05-16
3.2.1
Fix: NW.js 0.22.0+ apps didn't open. - 2017-02-12
3.2.0
Defaults to HTTPS now, addedmanifestUrl
option, and bumped some dependencies. - 2016-10-09
3.1.2
Fix for passing array as files option when running app (plus some security fixes). - 2016-10-09
3.1.1
Fix for flavor feature when using CLI. - 2016-09-14
3.1.0
Ability to select any flavor of NW.js, not justsdk
. - 2016-08-28
3.0.0
bumping graceful-fs-extra dependency to 2.0.0. - 2016-08-14
2.2.7
fix for macIcns option when using NW.js 0.12.3 - 2016-07-31
2.2.6
fix for OS X caching - 2016-07-03
2.2.5
fix for update-notifier usage in bin - 2016-07-03
2.2.4
fix for syntax error in CLI - 2016-07-02
2.2.3
a few small fixes for the run option and more - 2016-07-02
2.2.2
fix for cache check of some legacy versions - 2016-07-02
2.2.1
supports newer NW.js versions (via http://nwjs.io/versions.json), plus other fixes. - 2015-12-18
2.2.0
addedzip
option. - 2015-12-06
2.1.0
addedcacheDir
command-line option, fix for no info being passed back, etc. - 2015-06-28
2.0.2
put upper bound to semver check for windows. - 2015-06-14
2.0.1
safer validation of versions. - 2015-06-14
2.0.0
changed to nw-builder, etc. - 2015-05-05
1.0.12
when using latest NW.js version, it's first validated that it's not an alpha version (fixes #222). Plus a fix for thewinIco
&macIcns
command line options - 2015-01-29
1.0.8
fixed EMFILE errors (see #147 #148) - 2015-01-21
1.0.7
fixed about screen when copyright is not supplied - 2015-01-15
1.0.6
fixed downloads for nw.js version 0.12.0-alpha1 - 2015-01-15
1.0.5
fixed downloads for NW.js versions < 0.12.0-alpha - 2014-12-12
1.0.0
64-bit support, improved platform-overrides and no more EMFILE errors. - 2014-12-07
0.4.0
macPlist CFBundleIdentifier is generated frompackage.json
(see #131) - 2014-11-14
0.3.0
macPlist option improvements (see #96) - 2014-10-30
0.2.0
adds support for platform-specific manifest overrides (see #94) - 2014-08-19
0.1.2
adds a progress bar to downloads, fixes downloading through a proxy, fixed winIco, bug fixes - 2014-08-01
0.1.0
use app filename for generated executables, optimized version checking, (known issue:winIco
on windows) - 2014-07-31
0.0.4
fixed compatibility with nodewebkit 0.10.0 - 2014-04-20 Added run option, bug fixes
- 2014-04-13 Preview Release