-
-
Add three build profiles and infrastructure for their toml config - fitzgen, issue/153 issue/160 pull/440
When originally conceived,
wasm-packwas exclusively a packaging and publishing tool, which naively assumed that the crate author would simply runwasm-packwhen they were ready to publish a wasm package. As a result,wasm-packalways rancargo buildin--releasemode. Since then,wasm-packhas grown into an integrated build tool used at all stages of development, from idea conception to publishing, and as such has developed new needs.In previous releases, we've supported a flag called
--debugwhich will runcargo buildindevmode, which trades faster compilation speed for a lack of optimizations. We've renamed this flag to--devto matchcargoand added an additional flag, representing a third, intermediary, build profile, called--profilingwhich is useful for investigating performance issues. You can see all three flags and their uses in the table below:Profile Debug Assertions Debug Info Optimizations Notes --devYes Yes No Useful for development and debugging. --profilingNo Yes Yes Useful when profiling and investigating performance issues. --releaseNo No Yes Useful for shipping to production. The meaning of these flags will evolve as the platform grows, and always be tied to the behavior of these flags in
cargo. You can learn more about these in thecargo profiledocumentation.This PR also introduces a way to configure
wasm-packin yourCargo.tomlfile that we intend to use much more in the future. As a largely convention-based tool,wasm-packwill never require that you configure it manually, however, as our community and their projects mature alongside the tool, it became clear that allowing folks the ability to drop down and configure things was something we needed to do to meet their needs.Currently, you can only configure things related to the above-mentioned build profiles. To learn more, check out the documentation. It leverages the
package.metadata.wasm-packkey in yourCargo.toml, and looks like this:# Cargo.toml [package.metadata.wasm-pack.profile.dev.wasm-bindgen] # Should we enable wasm-bindgen's debug assertions in its generated JS glue? debug-js-glue = true # Should wasm-bindgen demangle the symbols in the "name" custom section? demangle-name-section = true # Should we emit the DWARF debug info custom sections? dwarf-debug-info = false
As always- there are defaults for you to use, but if you love to configure (or have a project that requires it), get excited, as your options have grown now and will continue to!
-
DEPRECATION: Rename
--debugto--devto matchcargo- fitzgen, pull/439See the discussion of the build profiles feature above. This is a strict renaming of the previous
--debugflag, which will now warn as deprecated. -
Add an option to pass an arbitrary set of arguments to
cargo build- torkve, issue/455 pull/461As an integrated build tool,
wasm-packorchestrates many secondary command line tools to build your package in a single command. Notably, one of these tools iscargo.cargohas a wide array of features and flags, and we couldn't reasonably expect to implement them all as first class features ofwasm-pack. As a result, we've created the option to allow users to pass an arbitrary number of additional flags towasm-packby appending them to thewasm-pack buildcommand, after passing--. For example:wasm-pack build examples/js-hello-world --mode no-install -- -Z offlineIn the above example, the flag
-Z offlinewill be passed tocargo build. This feature is documented here. -
Pre-build before wasm-pack publish - csmoe, issue/438 pull/444
Previously, if you ran
wasm-pack publishbefore you had successfully runwasm-pack build, you'd receive an error that a package could not be found- because there would be nopkgor out-directory containing apackage.json.In this situation, you would hope that
wasm-packwould build your package for you when you ranwasm-pack publish. This is slightly complicated by the fact that not everyone wants to build their package to the default target or to a directory namedpkg.To solve this, running
wasm-pack publishbefore a successful build will give you an interactive prompt to build your package- allowing you to specify your out directory as well as the target you'd like to build to. Check it out in the gif below: -
Generate self-.gitignore as part of pkg folder - RReverser, pull/453
Since
wasm-packwas first published, thepkgdirectory was intended to be treated as a build artifact, and as such should never be published to version control. This was never enforced by any assets generated bywasm-pack, however.Now, when building your package,
wasm-packwill also generate a.gitignorefile so that thepkg, or out-directory, will be ignored.If you use another version control tool, you'll need to still create or edit your own ignore file- pull requests to support other version control tools are welcome!
If you require editing of the generated
package.jsonor add additonal assets to your package before publishing, you'll want to remove the.gitignorefile and commit to version control. We intend to have a solution that makes this workflow significantly easier in upcoming releases! -
Support cargo workspaces - fitzgen, issue/252 issue/305 pull/430
Workspaces are a well-liked and used feature of cargo that allow you to build multiple crates in a single cargo project. Because of how
wasm-packhandled paths fortargetand out-directories, we did not support cargo workspaces out of the box. Now they should work well and the feature is well guarded by tests! -
Use a global cache for all downloaded binaries - alexcrichton, pull/426
wasm-packis an integrated build tool that orchestrates several other command line tools to build your wasm project for you. Howwasm-packdoes this has evolved significantly since it's early versions. In the last version, abindirectory was created to house the tool binaries thatwasm-packneeded to build our project, but this had several limitations. Firstly, it created abindirectory in your project's root, which could be confusing. Secondly, it meant that sharing these tools across multiple projects was not possible. We did this because it gaves us the fine-grained control over the version of these tools that you used.Now,
wasm-packwill not generate abindirectory, but rather will use a global cache. We retain the fine-grained control over the versions of these tools that are used, but allow multiple projects that use the same tools at the same versions to share the already installed asset. Your global cache will generally be in your user's home directory- we use thedirscrate to determine where to place this global cache. This is not currently customizable but is something we intend to look into doing!This feature ensures that
wasm-packusers are downloading a minimal number of binaries from the network, which, forwasm-packusers with multiple projects, should speed up build times.
-
-
-
Fix
pack,login, andpublishfor Windows users - danwilhelm, issue/277 pull/489Rust's behavior for spawning processes on some Windows targets introduced an interesting case where Rust would fail unless the command was explicitly spawned with a prepended
cmd /c. This failure ofwasm-packwas well noticed by our community - and thanks to the efforts ofdanwilhelmis now fixed! You can read more on the background of this issue in rust-lang/rust issue/44542. -
Validate
--targetargument - csmoe, issue/483 pull/484For a few releases now,
wasm-packhas supported allowing users to specifying the target module system they'd like their package built for-browser,nodejs, andno-modules. We did not however, validate this input, and so if a user made even a slight mistake, e.g.node,wasm-packwould not catch the error and would build your project using the default,browser. This is of course, surprising, and unpleasant behavior and so now we'll error out with a message containing the supported target names. -
Fix login - danwilhelm, issue/486 pull/487
-
Eliminate unecessary escaping in build success terminal output - huangjj27, issue/390 pull/396
Previously, on some systems, a successful
wasm-pack buildwould print a unfortunate looking string:| :-) Your wasm pkg is ready to publish at "\\\\?\\C:\\Users\\Ferris\\tmp\\wasm-bug\\pkg".We've updated this to make sure the path to your project is well-formed, and most importantly, human-readable.
-
Copy license file(s) to out directory - mstallmo, issue/407 pull/411
Since
wasm-packwas first published, we've copied over yourCargo.tomllicense definition over to yourpackage.json. However, we overlooked copying the actualLICENSEfiles over! Now we do! -
Don't require cdylib crate-type for testing - alexcrichton, pull/442
wasm-packwas unecssarily checkingCargo.tomlfor thecdylibcrate type during calls towasm-pack test. Thecdyliboutput isn't necessary for thewasm-pack teststage becausewasm-bindgenisn't being run over a wasm file during testing. This check is now removed! -
Fix wasm-bindgen if lib is renamed via
lib.name- alexcrichton, issue/339 pull/435In some circumstances, a library author may wish to specify a
namein the[package]portion of theirCargo.toml, as well as a differentnamein the[lib]portion, e.g.:[package] name = "hello-wasm" [lib] name = "wasm-lib"
This would cause the
wasm-bindgenbuild stage ofwasm-packto error out becausewasm-packwould attempt to runwasm-bindgen-clion a path using the[package]name, which wouldn't exist (because it would be using the[lib]name). Now it works- thanks to more usage ofcargo_metadatainwasm-packinternals! -
Print standard error only once for failing commands - fitzgen, issue/422 pull/424
Previously,
wasm-packmay have printedstderrtwice in some circumstances. This was both confusing and not a pleasant experience, so now we've ensued thatwasm-packprintsstderrexactly once! (It's hard enough to have errors, you don't wantwasm-packrubbing it in, right?) -
Add no-modules to --target flag's help text - fitzgen, issue/416 pull/417
This is an interesting one!
fitzgenvery reasonably filed an issue asking to addwasm-bindgen's--target no-modulesfeature towasm-pack. This was confusing as this feature was indeed already implemented, and documented- BUT, notably missing from thewasm-pack --helptext. We've fixed that now- and it was an omission so glaring we definitely considered it a bug!
-
-
-
Replace
slogwithlog- alexcrichton, issue/425 pull/434For internal maintenance reasons, as well as several end-user ones, we've migrated away from the
slogfamily of crates, and are now using thelogcrate plusenv_logger. Now,wasm-packwon't create awasm-pack.log. Additionally, enabling logging will now be done throughRUST_LOG=wasm_packinstead of-vflags. -
Move binary installation to its own crate - drager, issue/384 pull/415
In
wasm-pack 0.5.0, we move away fromcargo installing many of the tools thatwasm-packorchestrates. Because we usedcargo install, this required an end user to sit through the compilation of each tool, which was a prohibitively long time. We moved, instead, to building, and then installing, binaries of the tools. This sped up build times dramatically!This pattern has been very beneficial to
wasm-packand is potentially something that could be beneficial to other projects! As a result, we've refactored it out into a crate and have published it as it's own crate,binary-install. -
Replace internal
Errorwithfailure::Error- alexcrichton, pull/436The story of error message handling in
wasm-packhas not been the prettiest. We originally were manually implementing errors, adding thefailurecrate at one point, but not fully updating the entire codebase. With this PR, we are nearly completely handling errors withfailure, bringing the code into a much more maintainable and pleasant-to-work-on place. -
Read the
Cargo.tomlfile only once - fitzgen, issue/25 pull/431This is a very fun one since it fixes one of the original issues filed by
ag_dubsat the very beginning ofwasm-packdevelopment. In a rush to implement a POC tool,ag_dubsnoted for posterity that theCargo.tomlwas being read multiple times (twice), when it did not need to be. Thanks tofitzgennow it's read only once! A minor performance improvement in the scheme of things, but a nice one :) -
Fix typo in test function name for copying the README - mstallmo, pull/412
-
-
-
Complete template deep dive docs - danwilhelm, issue/345 issue/346 pull/490
In a rush to publish a release,
ag_dubsleft some "Coming soon!" comments on most pages of the "Template Deep Dive" docs. These docs help walk new users through the boilerplate that using thewasm-packtemplate generates for you. Thanks so much todanwilhemfor picking this up and doing an excellent job!
-
-
-
Child Process and output management - fitzgen, issue/287 pull/392
Not exactly a "fix", but definitely a huge improvment in how child processes and their output are handled by
wasm-pack. Ever sat at a long prompt fromwasm-packand wondered what was happening? No longer! Didwasm-packeat your test output- no more! -
Less scary missing field messages - mstallmo, issue/393 pull/394
After watching a livestream of someone using
wasm-pack, fitzgen noted that folks seemed pretty alarmed by the loud warning about missing optional manifest fields. As a result, we are now downgrading those messages from WARN to INFO, and consolidating them on a single line. -
Add
exit_statusto CLI errors - konstin, issue/291 pull/387We'd been hiding these- but we shouldn't have been!
-
Remove lingering forced nightly usage - alexcrichton, pull/383
In 0.5.0 we removed all forced nightly usage as we depend on
~1.30which is now available on both nightly and beta channels! We had a bit of a race condition with that PR and thewasm-pack testPR, and missed a few as a result! This removes all lingering forced nightly, which only affected thewasm-pack testcommand. -
Fix
wasm-bindgen-testdependency error message - fitzgen, issue/377 pull/378The error message about missing the
wasm-bindgen-testdependency errantly stated that the user was missing awasm-bindgendependency! We've fixed it to correctly state the missing dependency now.
-
-
-
Website! - ashleygwilliams, [pull/246]
We have a website now. It has the installer and links to documentation. In the future, we hope to have calls to action for folks first coming to the site who are looking to do specific things- these will help them find the docs and tutorials they need to.
This PR also has a complete rework of our documentation.
Check it out here!
-
-
BREAKING: use correct
package.jsonkeys for generated JavaScript - ashleygwilliams, issue/309 pull/312This is marked as potentially breaking because it changes the
package.jsonkeys that are generated by the project.Previously, we generated a JavaScript file and placed it in the
mainkey, regardless of what you were targeting, ES6 and Node.js alike.We have received a lot of requests for
wasm-packto generate "isomorphic" packages, that contain assets that could work on both Node.js and ES6, and this led to us looking more closely at how we are usingpackage.json.With this release, we will do the following:
-
--target browser: By default, we generate JS that is an ES6 module. We used to put this in themainfield. Now we put it in themodulefield. We also addsideEffects: falseso that bundlers that want to tree shake can. -
--target nodejs: This target doesn't change. We put generated JS that is a CommonJS module in themainkey. -
--target no-modules: This is a new target. For this target we generate bare JavaScript. This code is put in abrowserfield.
You can see the structs that represent each target's expected
package.jsonhere.Thanks so much to bterlson for his help in sorting this out for us!
-
-
-
-
wasm-pack initis nowwasm-pack build- csmoe, issue/188 pull/216When this project was first conceived, we imagined it would be simply a way to package up generate wasm and js and publish it to npm. Here we are at version
0.5.0and we have become much more- an integrated build tool!As a result, the original command
initdoes a lot more than that these days. We've renamed the command to better reflect the work it's actually doing.initwill still work, but is deprecated now, and we will eventually remove it. -
add new command:
wasm-pack test- fitzgen, pull/271This is an experimental new command that will run your tests in Node.js or a headless browser using
wasm-pack test. Check out this tutorial to learn more! -
add 2FA support to
wasm-pack publish- mstallmo, issue/257 pull/282We've been wrapping the
npm loginandnpm publishcommands aswasm-pack loginandwasm-pack publishfor a while now- but we didn't fully support two factor authentication. Now we do! (Be safe out there! 2FA is good for everyone!)
-
-
-
New target, bare JavaScript:
--target no-modules- ashleygwilliams, issue/317 pull/327wasm-bindgenoffers ano-modulesflag that until now, we didn't support. This flag produces bare, no modules JavaScript. So if that's your thing, this target is for you! -
--accessflag forwasm-packpublish - ashleygwilliams, issue/297 pull/299Many of our tutorials use scopes to help prevent folks from attempting to publish packages that will lead to npm Registry errors because the package name already exists.
However, by default, scoped packages are assumed by the npm registry to be private, and the ability to publish private packages to the npm registry is a paid feature. Worry not! Now you can pass
--access publictowasm-pack publishand publish scoped packages publicly.
-
-
-
rustc version check - ashleygwilliams, [issue/351] [pull/353]
Now that we have a new fangled installer, there's a chance that folks might install
wasm-packand not have Rust installed. Additionally, now that the features we required from thenightlychannel of Rust have moved tobeta- we don't need to enforcenightly.As of this release, we will check that your Rust version is above
1.30.0. You can be on either thenightlyorbetachannel and all ofwasm-packs calls tocargowill respect that.Really hate this? You can pass
--mode forcetowasm-packto skip this check. I hope you know what you're doing! -
coordinating wasm-bindgen versions and installing from binaries for improved speed - datapup, issue/146 pull/244 pull/324
This is the true gem of this release. Have you been frustrated by how long
wasm-packtakes to run? Overusing--mode no-install? This is the release you're looking for.Many releases back we realized that folks were struggling to keep the
wasm-bindgenlibrary that their project used in sync with thewasm-bindgenCLI application whichwasm-packruns for you. This became such an issue that we opted to force installwasm-bindgento ensure that everywasm-packuser had the latest version.Like many technical solutions, this solved our original problem, but caused a new one. Now, we we are forcing a
cargo installofwasm-bindgenon every run, and that means downloading and compilingwasm-bindgeneverytime you want to runwasm-pack. That's unacceptable!We're happy to announce that we have a pretty great solution, and several more planned for future releases. As of this release, we will read your
Cargo.lockto find the version ofwasm-bindgenyou are using in your local project. We will attempt to fetch a binary version ofwasm-bindgenthat matches your local version. We place that binary local to your project, and use it when you runwasm-pack build. The next time you runwasm-pack buildwe'll use that binary, instead of fetching a new one. We still fall back tocargo installfor less common architectures but this is a huge speed improvement. Check out these benchmarks!$ time wasm-pack init # fresh build real 1m58.802s user 14m49.679s sys 0m24.957s $ time wasm-pack init # re-build real 0m56.953s user 11m12.075s sys 0m18.835s $ time wasm-pack init -m no-install # re-build with no-install real 0m0.091s user 0m0.052s sys 0m0.042s$ time wasm-pack build # fresh build real 1m3.350s user 3m46.912s sys 0m6.057s $ time wasm-pack build # re-build real 0m0.230s user 0m0.185s sys 0m0.047s $ time wasm-pack build -m no-install # re-build with no-install real 0m0.104s user 0m0.066s sys 0m0.041s -
enforce
cargo buildwith--lib- ashleygwilliams, issue/303 pull/330Right now,
wasm-packonly works on Rust library projects. But sometimes, if you're new to Rust, you might end up having amain.rsin your project, just by mistake. Some folks ran into this and realized that it can cause issues!As a result, we are enforcing that
cargo buildonly build the library at this time.Want to use
wasm-packon a binary application? We're interested in hearing from you! Checkout issue/326 and please comment! We want to support binary applicaitons in the future and are always happy and curious to hear about how folks usewasm-pack!
-
-
-
Appveyor Windows Pre-Built binaries - alexcrichton, issue/147 pull/301
We finally got Appveyor to publish pre-built binaries to GitHub releases. Aside: I really wish there were an easier way to test and debug this stuff.
-
new experimental installer - alexcrichton, pull/307
Whew, this one is exciting. Up until now,
wasm-packhas been distributed usingcargo install. This is not ideal for several reasons. Updating is confusing, and every time it's installed the user has to wait for it to compile- right at the moment they just want to hurry up and use it already.Say hello to the new
wasm-packinstaller- we have an executable for Windows and acurlscript for *nix users. Not pleased with that? File an issue for your preferred distribution method and we'll do our best to get it working!This is experimental- so please try it out and file issues as you run into things! You'll always be able to use
cargo installas a backup.Checkout the new installer here!
-
-
-
-
improve readability of warnings about missing optional fields - twilco, pull/296
A little punctuation goes a long way. Error message improvement PRs are the best.
-
update links in README - alexcrichton, pull/300
We had a real dicey documentation situation for a while. Sorry about that, and thank you SO MUCH to all the folks who filed PRs to fix it.
-
fix broken links in book by using relative paths - mstallmo, issue/325 pull/328
-
-
-
recognize
[dependencies.wasm-bindgen]during dep check ininit- ashleygwilliams, issue/221 pull/224When we originally implemented the dependency check in
wasm-pack initwe naively only checked for the "simple" dependency declaration,[dependencies] wasm-bindgen="0.2". However! This is not the only way to declare this dependency, and it's not the ideal way to do it if you want to specify features from the crate. Now that a bunch of folks want to usefeatures = ["serde-serialize"]we ran into a bunch of folks having issues with our naive dependency checker! Thanks so much to turboladen for filing the very detailed issue that helped us solve this quickly!PSSSST! Curious what
features = ["serde-serialize"]withwasm-bindgenactually does? It's awesome:It's possible to pass data from Rust to JS not explicitly supported in the Feature Reference by serializing via Serde.
Read the Passing arbitrary data to JS docs to learn more!
-
improve UX of publish and pack commands - Mackiovello, pull/198
Previous to this fix, you would need to be in the parent directory of the
/pkgdir to successfully runpackorpublish. This was pretty crummy! Thankfully, Mackiovello swooped in with a fix, that you can find documented in the pack and publish docs! -
use
PathBufinstead ofStringfor paths - Mackiovello, pull/220This is mostly a maintenance PR but does fix one very small bug- depending on if you add a trailing slash to a path that you pass to
init, you might have seen an extra/! Now that we're using a proper Type to handle this, that's much better, and in general, all the operations using paths are more robust now.
-
-
-
update docs and tests to eliminate no longer necessary feature flags - ashleygwilliams, pull/226
The Rust 2018 edition marches on and we are seeing feature flags drop like flies :) Instead of a whole slew of feature flags, we now only need one,
#![feature(use_extern_macros)], and that one is also not long for this world :)
-
-
-
fix
fileskey value for projects build fornodejstarget - ashleygwilliams, issue/199 pull/205We became aware that the
fileskey inpackage.jsondid not include the additional_bg.jsfile thatwasm-bindgengenerates for projects being built for thenodejstarget. This resulted in the file not being included in the published package and resulted in aModule Not Founderror for folks.This was a group effort from mciantyre with pull/200 and Brooooooklyn with pull/197. Thank you so much for your diligence and patience while we sorted through it.
-
-
-
clean up
quicliremnants - SoryRawyer, pull/193In v0.3.0 we removed the
quiclidependency, however there were a few remnants left behind. They are now removed!
-
-
-
DOCUMENT EVERYTHING!! and deny missing docs for all future development - fitzgen, pull/208
The
wasm-packteam has worked hard on tutorial documentation and keeping the codebase as self-explanatory as possible, but we have been slowly accruing a documentation debt. This amazing PR, landed just moments before this point release and was just too good not to include. Thank you so much, fitzgen! -
fix README code example - steveklabnik, pull/195
The code example in our
README.mdwas missing a criticalpub. It's there now! -
fix README markup - Hywan, pull/202
There was an errant
`- it's gone now!
-
This release has a ton of awesome things in it, but the best thing is that
almost all of this awesome work is brought to you by a new contributor
to wasm-pack. Welcome ya'll! We're so glad to have you!
-
-
--modeflag for skipping steps when callinginit- ashleygwilliams, pull/186After teaching and working with
wasm-packfor some time, it's clear that people would like the flexibility to run some of the steps included in theinitcommand and not others. This release introduces a--modeflag that you can pass toinit. The two modes currently available areskip-buildandno-installsand they are explained below. In the future, we are looking to change theinitinterface, and potentially to split it into two commands. If you have thoughts or opinions on this, please weigh in on issue/188!-
skip-buildmode - kohensu, pull/151wasm-pack init --mode skip-buildSometimes you want to run some of the shorter meta-data steps that
wasm-pack initdoes for you without all the longer build steps. Now you can! Additionally, this PR was a fantastic refactor that allows even more custom build configurations will be simple to implement! -
no-installsmode - ashleygwilliams, pull/186wasm-pack init --mode no-installsSometimes you want to run
wasm-packand not have it modify your global env by installing stuff! Or maybe you are just in a hurry and trust your env is set up correctly- now the--mode no-installoption allows you to do this.
-
-
wasm-pack init --debugFind yourself needing to compile your Rust in
developmentmode? You can now pass the--debugflag to do so! Thanks so much to clanehin for filing issue/126 for this feature... and then implementing it!
-
-
-
ensure you have
cdylibcrate type - kendromelon, pull/150One of the biggest mistakes we've seen beginners make is forgetting to declare the
cdylibcrate type in theirCargo.tomlbefore runningwasm-pack init. This PR fixes that, and comes from someone who ran into this exact issue learning aboutwasm-packat JSConfEU! Love when it works out like this. -
ensure you have declared wasm-bindgen as a dep - robertohuertasm, pull/162
Another easy mistake to make is to forget to declare
wasm-bindgenas a dependency in yourCargo.toml. Nowwasm-packwill check and make sure you have it set before doing a bunch of long build steps :) -
ensure you are running
nightly- FreeMasen, pull/172wasm-packcurrently requires that you run it withnightlyRust. Now,wasm-packwill make sure you havenightlyinstalled and will ensure thatcargo buildis run withnightly. Thanks so much to FreeMasen for filing issue/171 and fixing it!
-
-
fixed broken progress bar spinner - migerh, pull/164
Oh no! We broke the progress bar spinner in version 0.3.0. Thankfully, it's fixed now- with a thoughtful refactor that also makes the underlying code sounder overall.
-
WIP bot - ashleygwilliams & mgattozzi, issue/170
We've got a lot of work happening on
wasm-packso it's good to have a bit of protection from accidentally merging a Work In Progress. As a result, we now have the WIP Github App set up onwasm-pack. Great suggestion mgattozzi! -
modularize
command.rs- ashleygwilliams, pull/182Thanks to the growth of
wasm-pack,command.rswas getting pretty long. We've broken it out into per command modules now, to help make it easier to read and maintain! -
improve PoisonError conversion - migerh, pull/187
As part of the awesome progress bar spinner fix in pull/164, migerh introduced a small concern with an
unwrapdue to an outstanding need to convertPoisonErrorintowasm-pack's customError. Though not a critical concern, migerh mitigated this right away by replacingstd::sync::RwLockwith theparking_lotcrate! This cleaned up the code even more than the previous patch! -
wasm category for crates.io discovery- TomasHubelbauer, pull/149
crates.io has categories to help folks discover crates, be we weren't leveraging it! Now- if you explore the
wasmcategory on crates.io you'll seewasm-pack!
-
human panic is now 1.0.0 - spacekookie, pull/156
Congrats friends! We like what you do.
-
cleaned up the README - ashleygwilliams, pull/155
Our
READMEwas struggling with a common problem- doing too much at once. More specifically, it wasn't clear who the audience was, contributers or end users? We've cleaned up our README and created a document specifically to help contributors get up and running.
Babby's first point release! Are we a real project now?
-
fixed
initIs a Directoryerror - ashleygwilliams, pull/139Our new logging feature accidentally introduced a regression into 0.3.0. When calling
wasm-pack init, if a directory was not passed, a user would receive a "Is a Directory" Error. Sorry about that! Thanks to jbolila for filing issue/136!
-
typescript files were not included in published package - danreeves, pull/138
Generating Typescript type files by default was a pretty rad feature in 0.3.0 but we accidentally forgot to ensure they were included in the published package. Thanks so much to danreeves for catching this issue and fixing it for us!
-
Up until now, we've forced folks to rely on emoji-jammed console output to debug errors. While emojis are fun, this is often not the most pleasant experience. Now we'll generate a
wasm-pack.logfile ifwasm-packerrors on you, and you can customize the log verbosity using the (previously unimplemented) verbosity flag.
-
--targetflag - djfarly, pull/132wasm-bindgen-cliis able to generate a JS module wrapper for generated wasm files for both ES6 modules and CommonJS. Up until now, we only used wasm-bindgen's default behavior, ES6 modules. You can now pass a--targetflag with eithernodejsorbrowserto generate the type of module you want to use. Defaults tobrowserif not passed.
-
human readable panics - yoshuawuyts, pull/118
Panics aren't always the most friendly situation ever. While we never want to panic on ya, if we do- we'll do it in a way that's a little more readable now.
-
typescript support by default - kwonoj, pull/109
wasm-bindgennow generates typescript type files by default. To suppress generating the type file you can pass the--no-typescriptflag. The type file is useful for more than just typescript folks- many IDEs use it for completion!
-
wrap
npm logincommand - djfarly, pull/100In order to publish a package to npm, you need to be logged in. You can now use
wasm-pack loginto login to the npm (or any other) registry.
-
exit early on failure - mgattozzi, pull/90
Until now,
wasm-packwould continue to run tasks, even if a task failed. Now- if something fails, we'll exit so you don't have to wait to fix the error.
-
force install wasm-bindgen - ashleygwilliams, pull/133
Using an out of date version of
wasm-bindgencan run you into a bunch of trouble. This very small change should fix the large number of bug reports we received from users using an out of datewasm-bindgen-cliby force installingwasm-bindgen-clito ensure the user always has the latest version. We don't expect this to be a forever solution (it's a bit slow!) but it should help those who are getting started have a less rough time.
-
fix CI release builds - ashleygwilliams, pull/135
This was not working! But now it is! You can always use
cargo installto install wasm-pack, but now you can find pre-built Linux and Mac binaries in the Releases tab of our GitHub repo.
-
remove
quiclidependency - mgattozzi, pull/131While
quicliis a great way to get started writing a CLI app in Rust- it's not meant for large, mature applications. Now thatwasm-packis bigger and has many active users, we've removed this dependency to unblock further development on the tool.
-
update rustfmt CI test - djfarly, pull/128
Since 0.2.0 how one should call
rustfmtchanged! We've kept it up to date so we can continue to maintain conventional style in the codebase.
-
custom module for errors - mgattozzi, pull/120
Thanks to the
failurecrate, we've been playing fast and loose with errors for a bit. We're finally getting serious about error handling - by organizing all of our specific errors in a specific module. This will make it easier to communicate these errors out and handle new error cases from future features.
Special thanks to data-pup who continues to be our documentation champion! In case you missed it, check out the guides in the docs directory!!
This release focuses on filling out all commands and improving stderr/out handling for improved user experience!
packandpublish- jamiebuilds, pull/67 You can now runwasm-pack packto generate a tarball of your generated package, as well as runwasm-pack publishto publish your package to the npm registry. Both commands require that you have npm installed, and thepublishcommand requires that you be logged in to the npm client. We're working on wrapping thenpm logincommand so that you can also login directly fromwasm-pack, see pull/100 for more details.
-
package.jsonis pretty printed now - yoshuawuyts, pull/70Previously,
package.jsonwas not very human readable. Now it is pretty printed! -
collaborators- yoshuawuyts, pull/70wasm-packnow will fill out thecollaboratorsfield in yourpackage.jsonfor you based on yourCargo.tomlauthorsdata. For more discussion on how we decided on this v.s. other types ofauthorfields inpackage.json, see issues/2.
- Release binaries built with CI - ashleygwilliams, pull/103
Thanks so much to mgattozzi, data-pup, sendilkumarn, Andy-Bell, steveklabnik, jasondavies, and edsrzf for all the awesome refactoring, documentation, typo-fixing, and testing work. We appreciate it so much!
- First release!
