wasm-pack icon indicating copy to clipboard operation
wasm-pack copied to clipboard

can I run with a specified Cargo.toml path

Open tiye opened this issue 2 years ago • 6 comments

💡 Feature description

like:

wasm-pack build --manifest-path folder/Cargo.toml

so I can keep 2 copies of Cargo.toml and use one of them for wasm-pack.

original problem was I need to build both staticlib dylib and cdylib, they produce a conflict. I want to keep multiple versions of Cargo.toml for switching.

💻 Basic example

same as above.

tiye avatar Dec 06 '21 04:12 tiye

Hi Jon,

What problem are you trying to solve with the Cargo switching?

For now, I'm guessing you want two Cargo.toml files for building to different targets. If not, why else would you want this?

Have you read the Cargo docs? It supports release profiles.

Cargo also supports conditional dependencies:

[target.'cfg(target_arch = "wasm32")'.dependencies]
crate = "0.1.0"
etc...

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
crate = "0.2.1
etc...

If this somehow doesn't suit you... can you use git branches?

tijlleenders avatar Dec 06 '21 05:12 tijlleenders

I use a separate crate for the WebAssembly wrapper code and build config, so a top-level my-project/Cargo.toml:

[workspace]

members = [
	"my-rust-lib",
	"my-wasm-wrapper",
]

... and then those crates have separate files my-rust-lib/Cargo.toml and my-wasm-wrapper/Cargo.toml.

Keep things simple and clear. Does this kind of workspace separation suit you, @jiyinyiyong ?

gthb avatar Dec 06 '21 12:12 gthb

@tijlleenders I thought about that for a while, it was not for dependencies, but for lib types:

[lib]
crate-types = [...]

it appears that it's still not supported according to https://github.com/rust-lang/cargo/issues/4881 so I cannot use in that way.

tiye avatar Dec 06 '21 13:12 tiye

@gthb thanks, it might work, but I think it does not fit my current case. I have to compile a same piece of code to multiple targets. Splitting code into multiple crates add extra complexities. I have a dirty solution at now.

tiye avatar Dec 06 '21 13:12 tiye

Wow... that issue is three years old. Seems pretty clear it's not solvable at the moment.

My workaround would be to swap the cargo.toml in the build pipeline.

tijlleenders avatar Dec 06 '21 13:12 tijlleenders

My workaround would be to swap the cargo.toml in the build pipeline.

yep. my current dirty way.

tiye avatar Dec 06 '21 13:12 tiye