Closed kevmoo closed 1 week ago
I can see the need for this.
However if we do this as a flag to pub get
(such as --ignore-workspace
) we have a problem that this will not "stick" when eg. dart run
is doing automatic validation of the resolution.
We could make a command like dart pub workspace drop
that removes resolution workspace
from the pubspec.yaml.
@jonasfj any ideas?
Talking with @jonasfj here are some options for consuming the package inside the docker image:
pub global activate -spath
to consume the package.Also if we really wanted to provide something like this, it should probably be as an environment variable, as that could stick between commands.
@kevmoo do any of the above solutions work for you?
I'd LOVE to have an environment variable that's just PUB_IGNORE_WORKSPACE
Scenario: you have a package that you want to use in docker.
Copy the entire workspace into the container. Ideally, build an AOT snapshot and insert it into a docker image that only has the AOT-runtime (using docker multistage builds).
That said, I see how this is annoying, because docker build
and similar tools can copy in files above Dockerfile
.
How about using pubspec_override.yaml
to specify resolution: null
or resolution: root
.
It's a bit annoying to have to create such a file in a docker container after copying over the source files.
Do note that you actually run into one more problem. You are not copying over pubspec.lock
, because it's sitting the workspace root.
This means that: You'd be deploying untested code!.
Inside a Dockerfile
one really should only ever use dart pub get --enforce-lockfile
.
So if you use workspaces, you'll need to copy over the entire workspace.
Or we'll need to:
resolution: local
; and;resolution: local
is present, but parent directories are not copied into the docker container.With: https://github.com/dart-lang/pub/pull/4400 you can drop a file called pubspec_overrides.yaml
reading: resolution:
(ie. resolution: null
) next to the pubspec.yaml
and make pub ignore the workspace.
@kevmoo does that work for you?
@sigurdm – it'd be nice to just have a CLI option. But just adding a file and removing it is much more scriptable than trying to use sed
in a Docker script 😄
@sigurdm – it'd be nice to just have a CLI option. But just adding a file and removing it is much more scriptable than trying to use
sed
in a Docker script 😄
Ok - I'll close this issue for now then.
Scenario: you have a package that you want to use in docker.
You copy the package contents into docker and expect
dart pub ...
to work, but it fails because you haven't copied the entire repo.I've had to create a hack script to delete the
workspace
property out of a pubspec to make things work. Not ideal.