浏览代码

Merge branch 'master' into events-2

Evan Almloff 1 年之前
父节点
当前提交
b1b2537949

+ 1 - 1
docs/guide/src/en/getting_started/web.md

@@ -25,7 +25,7 @@ The Web is the best-supported target platform for Dioxus.
 To develop your Dioxus app for the web, you'll need a tool to build and serve your assets. We recommend using [dioxus-cli](https://github.com/DioxusLabs/dioxus/tree/master/packages/cli) which includes a build system, Wasm optimization, a dev server, and support hot reloading:
 To develop your Dioxus app for the web, you'll need a tool to build and serve your assets. We recommend using [dioxus-cli](https://github.com/DioxusLabs/dioxus/tree/master/packages/cli) which includes a build system, Wasm optimization, a dev server, and support hot reloading:
 
 
 ```shell
 ```shell
-cargo install dioxus-cli
+cargo install dioxus-cli --locked
 ```
 ```
 
 
 Make sure the `wasm32-unknown-unknown` target for rust is installed:
 Make sure the `wasm32-unknown-unknown` target for rust is installed:

+ 6 - 5
examples/PWA-example/README.md

@@ -7,12 +7,13 @@ It is also very much usable as a template for your projects, if you're aiming to
 
 
 ## Try the example
 ## Try the example
 
 
-Make sure you have Dioxus CLI installed (if you're unsure, run `cargo install dioxus-cli`).
+Make sure you have Dioxus CLI installed (if you're unsure, run `cargo install dioxus-cli --locked`).
 
 
 You can run `dx serve` in this directory to start the web server locally, or run
 You can run `dx serve` in this directory to start the web server locally, or run
 `dx build --release` to build the project so you can deploy it on a separate web-server.
 `dx build --release` to build the project so you can deploy it on a separate web-server.
 
 
 ## Project Structure
 ## Project Structure
+
 ```
 ```
 ├── Cargo.toml
 ├── Cargo.toml
 ├── Dioxus.toml
 ├── Dioxus.toml
@@ -33,12 +34,12 @@ You can run `dx serve` in this directory to start the web server locally, or run
 
 
 If you're just getting started with PWAs, here are some useful resources:
 If you're just getting started with PWAs, here are some useful resources:
 
 
-* [PWABuilder docs](https://docs.pwabuilder.com/#/)
-* [MDN article on PWAs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)
+- [PWABuilder docs](https://docs.pwabuilder.com/#/)
+- [MDN article on PWAs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)
 
 
 For service worker scripting (in JavaScript):
 For service worker scripting (in JavaScript):
 
 
-* [Service worker guide from PWABuilder](https://docs.pwabuilder.com/#/home/sw-intro)
-* [Service worker examples, also from PWABuilder](https://github.com/pwa-builder/pwabuilder-serviceworkers)
+- [Service worker guide from PWABuilder](https://docs.pwabuilder.com/#/home/sw-intro)
+- [Service worker examples, also from PWABuilder](https://github.com/pwa-builder/pwabuilder-serviceworkers)
 
 
 If you want to stay as close to 100% Rust as possible, you can try using [wasi-worker](https://github.com/dunnock/wasi-worker) to replace the JS service worker file. The JSON manifest will still be required though.
 If you want to stay as close to 100% Rust as possible, you can try using [wasi-worker](https://github.com/dunnock/wasi-worker) to replace the JS service worker file. The JSON manifest will still be required though.

+ 1 - 2
packages/cli/Cargo.toml

@@ -36,7 +36,7 @@ chrono = "0.4.19"
 anyhow = "1.0.53"
 anyhow = "1.0.53"
 hyper = "0.14.17"
 hyper = "0.14.17"
 hyper-rustls = "0.23.2"
 hyper-rustls = "0.23.2"
-indicatif = "0.17.0-rc.11"
+indicatif = "0.17.5"
 subprocess = "0.2.9"
 subprocess = "0.2.9"
 
 
 axum = { version = "0.5.1", features = ["ws", "headers"] }
 axum = { version = "0.5.1", features = ["ws", "headers"] }
@@ -75,7 +75,6 @@ gitignore = "1.0.7"
 open = "4.1.0"
 open = "4.1.0"
 cargo-generate = "0.18"
 cargo-generate = "0.18"
 toml_edit = "0.19.11"
 toml_edit = "0.19.11"
-# dioxus-rsx = "0.0.1"
 
 
 # bundling
 # bundling
 tauri-bundler = { version = "=1.2", features = ["native-tls-vendored"] }
 tauri-bundler = { version = "=1.2", features = ["native-tls-vendored"] }

+ 3 - 1
packages/cli/README.md

@@ -11,7 +11,7 @@ It handles all building, bundling, development and publishing to simplify develo
 ### Install the stable version (recommended)
 ### Install the stable version (recommended)
 
 
 ```
 ```
-cargo install dioxus-cli
+cargo install dioxus-cli --locked
 ```
 ```
 
 
 ### Install the latest development build through git
 ### Install the latest development build through git
@@ -28,6 +28,7 @@ This will download the CLI from the master branch,
 and install it in Cargo's global binary directory (`~/.cargo/bin/` by default).
 and install it in Cargo's global binary directory (`~/.cargo/bin/` by default).
 
 
 ### Install from local folder
 ### Install from local folder
+
 ```
 ```
 cargo install --path . --debug
 cargo install --path . --debug
 ```
 ```
@@ -52,6 +53,7 @@ You can use the `Dioxus.toml` file for further configuration.
 Some fields are mandatory, but the CLI tool will tell you which ones are missing.
 Some fields are mandatory, but the CLI tool will tell you which ones are missing.
 You can create a `Dioxus.toml` with all fields already set using `dx config init project-name`,
 You can create a `Dioxus.toml` with all fields already set using `dx config init project-name`,
 or you can use this bare-bones template (only mandatory fields) to get started:
 or you can use this bare-bones template (only mandatory fields) to get started:
+
 ```toml
 ```toml
 [application]
 [application]
 name = "project-name"
 name = "project-name"

+ 2 - 2
packages/cli/docs/src/installation.md

@@ -16,8 +16,8 @@ and install it in Cargo's global binary directory (`~/.cargo/bin/` by default).
 The published version of the Dioxus CLI is updated less often, but is more stable than the git version.
 The published version of the Dioxus CLI is updated less often, but is more stable than the git version.
 
 
 ```
 ```
-cargo install dioxus-cli
+cargo install dioxus-cli --locked
 ```
 ```
 
 
 Run `dx --help` for a list of all the available commands.
 Run `dx --help` for a list of all the available commands.
-Furthermore, you can run `dx <COMMAND> --help` to get help with a specific command.
+Furthermore, you can run `dx <COMMAND> --help` to get help with a specific command.

+ 5 - 7
packages/cli/src/builder.rs

@@ -22,7 +22,7 @@ pub struct BuildResult {
     pub elapsed_time: u128,
     pub elapsed_time: u128,
 }
 }
 
 
-pub fn build(config: &CrateConfig, quiet: bool) -> Result<BuildResult> {
+pub fn build(config: &CrateConfig) -> Result<BuildResult> {
     // [1] Build the project with cargo, generating a wasm32-unknown-unknown target (is there a more specific, better target to leverage?)
     // [1] Build the project with cargo, generating a wasm32-unknown-unknown target (is there a more specific, better target to leverage?)
     // [2] Generate the appropriate build folders
     // [2] Generate the appropriate build folders
     // [3] Wasm-bindgen the .wasm fiile, and move it into the {builddir}/modules/xxxx/xxxx_bg.wasm
     // [3] Wasm-bindgen the .wasm fiile, and move it into the {builddir}/modules/xxxx/xxxx_bg.wasm
@@ -53,7 +53,8 @@ pub fn build(config: &CrateConfig, quiet: bool) -> Result<BuildResult> {
         .arg("build")
         .arg("build")
         .arg("--target")
         .arg("--target")
         .arg("wasm32-unknown-unknown")
         .arg("wasm32-unknown-unknown")
-        .arg("--message-format=json");
+        .arg("--message-format=json")
+        .arg("--quiet");
 
 
     let cmd = if config.release {
     let cmd = if config.release {
         cmd.arg("--release")
         cmd.arg("--release")
@@ -66,8 +67,6 @@ pub fn build(config: &CrateConfig, quiet: bool) -> Result<BuildResult> {
         cmd
         cmd
     };
     };
 
 
-    let cmd = if quiet { cmd.arg("--quiet") } else { cmd };
-
     let cmd = if config.custom_profile.is_some() {
     let cmd = if config.custom_profile.is_some() {
         let custom_profile = config.custom_profile.as_ref().unwrap();
         let custom_profile = config.custom_profile.as_ref().unwrap();
         cmd.arg("--profile").arg(custom_profile)
         cmd.arg("--profile").arg(custom_profile)
@@ -386,10 +385,9 @@ fn prettier_build(cmd: subprocess::Exec) -> anyhow::Result<Vec<Diagnostic>> {
         }
         }
     }
     }
 
 
-    StopSpinOnDrop(pb.clone());
-
     let stdout = cmd.detached().stream_stdout()?;
     let stdout = cmd.detached().stream_stdout()?;
     let reader = std::io::BufReader::new(stdout);
     let reader = std::io::BufReader::new(stdout);
+
     for message in cargo_metadata::Message::parse_stream(reader) {
     for message in cargo_metadata::Message::parse_stream(reader) {
         match message.unwrap() {
         match message.unwrap() {
             Message::CompilerMessage(msg) => {
             Message::CompilerMessage(msg) => {
@@ -409,7 +407,7 @@ fn prettier_build(cmd: subprocess::Exec) -> anyhow::Result<Vec<Diagnostic>> {
                 }
                 }
             }
             }
             Message::CompilerArtifact(artifact) => {
             Message::CompilerArtifact(artifact) => {
-                pb.set_message(format!("Compiling {} ", artifact.package_id));
+                pb.set_message(format!("⚙️ Compiling {} ", artifact.package_id));
                 pb.tick();
                 pb.tick();
             }
             }
             Message::BuildScriptExecuted(script) => {
             Message::BuildScriptExecuted(script) => {

+ 1 - 1
packages/cli/src/cli/build.rs

@@ -42,7 +42,7 @@ impl Build {
 
 
         match platform {
         match platform {
             Platform::Web => {
             Platform::Web => {
-                crate::builder::build(&crate_config, false)?;
+                crate::builder::build(&crate_config)?;
             }
             }
             Platform::Desktop => {
             Platform::Desktop => {
                 crate::builder::build_desktop(&crate_config, false)?;
                 crate::builder::build_desktop(&crate_config, false)?;

+ 3 - 3
packages/cli/src/server/web/mod.rs

@@ -73,7 +73,7 @@ pub async fn serve_default(
     config: CrateConfig,
     config: CrateConfig,
     start_browser: bool,
     start_browser: bool,
 ) -> Result<()> {
 ) -> Result<()> {
-    let first_build_result = crate::builder::build(&config, false)?;
+    let first_build_result = crate::builder::build(&config)?;
 
 
     log::info!("🚀 Starting development server...");
     log::info!("🚀 Starting development server...");
 
 
@@ -134,7 +134,7 @@ pub async fn serve_hot_reload(
     config: CrateConfig,
     config: CrateConfig,
     start_browser: bool,
     start_browser: bool,
 ) -> Result<()> {
 ) -> Result<()> {
-    let first_build_result = crate::builder::build(&config, false)?;
+    let first_build_result = crate::builder::build(&config)?;
 
 
     log::info!("🚀 Starting development server...");
     log::info!("🚀 Starting development server...");
 
 
@@ -474,7 +474,7 @@ async fn ws_handler(
 }
 }
 
 
 fn build(config: &CrateConfig, reload_tx: &Sender<()>) -> Result<BuildResult> {
 fn build(config: &CrateConfig, reload_tx: &Sender<()>) -> Result<BuildResult> {
-    let result = builder::build(config, true)?;
+    let result = builder::build(config)?;
     // change the websocket reload state to true;
     // change the websocket reload state to true;
     // the page will auto-reload.
     // the page will auto-reload.
     if config
     if config