Giter Club home page Giter Club logo

vscode-monorepo-workspace's Introduction

Monorepo Workspace

Manage monorepos with multi-root workspaces. Supports Lerna, Yarn, Pnpm, Rushjs and recursive package directories.

Features

All Monorepo Workspace functionality can be found in the command palette. Available commands:

Commands

Selecting workspace folders: Select

Selecting one package: Commands

  • Monorepo: Select Workspace Folders: select active folders in your workspace, including packages in your repository
  • Monorepo: Open Package (Current Window): open a package from your repository in the current window
  • Monorepo: Open Package (New Window): open a package from your repository in a new window
  • Monorepo: Open Package (Workspace Folder): add a package from your repository as a workspace folder

You can also create workspace folders for all your repository packages with Monorepo: Sync Workspace Folders: Commands

Extension Settings

Monorepo Manager tries to detect the type of package (library, application or tool) based on configurable regexes.

The workspace folder prefix containing the emoji is also configurable.

You can also configure custom types with a prefix in your JSON settings:

{
  "monorepoWorkspace.folders.custom": [
    {"regex":"app1", "prefix": "🔥"},
    {"regex":"app2", "prefix": "📚"}
  ]
}

You can find all options under "Monorepo Workspace" in your configurtion.

Release Notes

1.2.0

Added option to configure custom package types

1.1.3

Fixed an issue with workspace folders on Windows

1.0.0

Initial release 🎉

vscode-monorepo-workspace's People

Contributors

dependabot[bot] avatar folke avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vscode-monorepo-workspace's Issues

publish to Open VSX

Please consider publishing to OpenVSX registry.

We are running Web version of VS Code in Gitpod. But only MS products like VS Code may use MS Marketplace. So we have to use Open VSX instead. It is a vendor neutral alternative. Products like VSCodium, Theia, code-server and so on are using OpenVSX registry.

Docs are here: https://github.com/eclipse/openvsx/wiki/Publishing-Extensions Technically it should be straightforward. You get a token and call ovsx publish with it, for instance how RedHat is publishing the java extension: https://github.com/redhat-developer/vscode-java/blob/ff51dbffc30dd23190335c929e9f34ccdf511554/Jenkinsfile#L73-L82

Is there any way to ignore node_modules?

In my case when I do "Select workspace folders" It shows me modules from my project's dependencies (from node_module folder).

This doesn't help

  "files.exclude": {
    "**/node_modules": true
  }

Feature Request: Open package.json in new tab

This extension is great, but a key feature that it's lacking for me to get the most out of it is the ability to open the corresponding package.json in a new tab, instead of updating the workspace config or opening a window.

It's much faster to open the package.json in a new tab, select the file in the Explorer View and then go from there.

Thank you!

Feature Request: Keep manual sorting when syncing workspace folders

Thanks a lot for this extension, I like it.

I manually sort folders after syncing to better match the organization I prefer. When I sync again, this sorting is reset. I wish for an option, that when I sync, newly discovered packages are only added to the end of the list and existing ones are updated (e.g. the emoji), but existing sorting stays as is.

Thanks a lot in advance.

Command not found - VsCode Electron 12.x

Hi,
Your extension seems great and i really would like to try it.
Unfortunately it doesn't seems to be working for me.

Here is how it went :

  1. Installation went fine
  2. Tried To execute a command in a repo (WSL): every command fail with command not found.
  3. Tried To execute a command in a repo (local): every command fail with command not found.
    image

Environnment:

  • Windows 10
  • VsCode
Version: 1.56.2 (user setup)
Commit: 054a9295330880ed74ceaedda236253b4f39a335
Date: 2021-05-12T17:13:13.157Z
Electron: 12.0.4
Chrome: 89.0.4389.114
Node.js: 14.16.0
V8: 8.9.255.24-electron.0
OS: Windows_NT x64 10.0.19042
  • Monorepo
Name: Monorepo Workspace
Id: folke.vscode-monorepo-workspace
Description: Manage monorepos with multi-root workspaces. Supports Lerna, Yarn, Pnpm, Rushjs and recursive package directories
Version: 1.3.1
Publisher: Folke Lemaitre
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=folke.vscode-monorepo-workspace

I happened to have seen a similar error recently on another extension (Spell Right) and it might just be related to the fact that VsCode updated their Electron version.
Here is the link to the answer of the owner: bartosz-antosik/vscode-spellright#426 (comment)

Feel free to ask for further information i would be glad to be of help!

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Warning

These dependencies are deprecated:

Datasource Name Replacement PR?
npm eslint-plugin-node Available
npm rollup-plugin-terser Available
npm vscode-test Unavailable

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency @rollup/plugin-commonjs to v26
  • chore(deps): update dependency glob to v11
  • chore(deps): update dependency rollup to v4
  • chore(deps): update dependency typescript to v5
  • 🔐 Create all rate-limited PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

npm
package.json
  • rollup-plugin-progress 1.1.2
  • ultra-runner 3.10.5
  • @rollup/plugin-commonjs 17.1.0
  • @rollup/plugin-node-resolve 11.2.0
  • @rollup/plugin-typescript 8.2.0
  • @types/glob 7.1.3
  • @types/mocha 8.2.1
  • @types/node 14.14.31
  • @types/vscode 1.53.0
  • @typescript-eslint/eslint-plugin 4.15.2
  • @typescript-eslint/parser 4.15.2
  • devmoji 2.2.0
  • eslint 7.21.0
  • eslint-config-prettier 8.1.0
  • eslint-plugin-chai-expect 2.2.0
  • eslint-plugin-import 2.22.1
  • eslint-plugin-jest 24.1.5
  • eslint-plugin-node 11.1.0
  • eslint-plugin-prettier 3.3.1
  • eslint-plugin-promise 4.3.1
  • eslint-plugin-unicorn 28.0.2
  • glob 7.1.6
  • husky 5.1.1
  • mocha 8.3.0
  • prettier 2.2.1
  • rollup 2.40.0
  • rollup-plugin-terser 7.0.2
  • rollup-plugin-typescript2 0.30.0
  • tslib 2.1.0
  • typescript 4.2.2
  • vscode-test 1.5.1
  • vscode >=1.53.0

  • Check this box to trigger a request for Renovate to run again on this repository

[FR] More emoji via `monorepoWorkspace.moreFolders: [{prefix, regex}]`?

Hey, I've found I could use a bit more differentiation between package types in my workspace. There's definitely value to being able to manage settings through the settings UI, but for cases where more emoji would be useful, how about an array config? E.G. monorepoWorkspace.moreFolders: [{prefix, regex}]

While I was looking around the code, I also found what I think might be a typo. Should it be "prefix.unkown"?

Thanks!

Support any type of apps, not just package.json

It would be nice if other type of apps were supported.

For example, I have a Python backend in my monorepo.

Either by customizing workspaceContains:

workspaceContains:[**/package.json, **/Pipfile]

Or by manually selecting folders that you want to consider "apps".

Find in Folder uses the monorepo package name instead of actual path

When right clicking on a package name in my monorepo and selecting "Find in Folder", the "files to include" field is populated with a path that uses the extensions package name (complete with emoji) instead of the actual path. This is in vscode 1.50 (first noticed it in 1.49) and monorepo-workspace extension 1.2.0.

selecting workspace folders alters the workspace configuration

Hello. The extension is great, except one thing, which renders the extension unusable to me:

It alters [workspace].code-workspace when switching workspace folders (its okay when it syncs packages). You understand that the purpose of this file is storing project (monorepo) settings to other vs-code users? If it keeps changing for every user individually workspace selection, you have to .gitignore it, which renders the purpose of storing cross-user settings pointless - extension recommendations btw. indicating the point of file is to share, not to ignore - why should I recommend extensions to myself?

Is there any way to prevent or workaround this behavior? TI hope there is a solution because otherwise the extension is great. Thanks in advance.

Version 1.3.0 is so slow

In a project with more than 50 packages and thousand of dependencies the new version 1.3.0 take long time to launch "Select workspace Folders". I downgraded to 1.2.0 and the process is instantaneous.

Always sync before select?

Hey, I love the plugin! Just wondering if you could set it to always sync before opening the select GUI. I think this would definitely help streamline the UI.

Can’t recognise packages in a yarn workspace/nx monorepo

I work on a Monorepo using nx and yarn workspaces. we have our packages grouped in nested directories. I wanted to try Monorepo Workspace but it only recognises our apps.

like so

./apps/
  app-1/
  app-2/
./packages/
  common/
    pkg-1/
    pkg-2/
    data-access/
      pkg-1/
  app-1/
    pkg-1/

Open Package is not working on Apple Silicon Mac Book Air

I tried to get you logs but don't know where they would be. Please let me know what you need.

Steps to Reproduce:

  1. Have MacBook Air 8 GB M1 model
  2. Install VSCode Insider 1.53.0 (sha: 4a875e23d20b64504a818834f3fa4c40adb8d480)

VSCode installed:

Version: 1.53.0-insider
Commit: 4a875e23d20b64504a818834f3fa4c40adb8d480
Date: 2020-12-21T12:34:09.548Z (1 wk ago)
Electron: 11.1.0
Chrome: 87.0.4280.88
Node.js: 12.18.3
V8: 8.7.220.29-electron.0
OS: Darwin arm64 20.1.0

Machine Configuration

MacBook Air (M1, 2020)
Chip: Apple M1
Memory: 8 GB

helpwanted: subdirectories not recognised

Heya, so I'm running a mono repository with the following stack, however, whenever I try to use your extension it won't see any of my packages. I'm not very good with regex so that might be the issue (reset it to standard now).

root: smartcloud-dev
./package.json
./packages/public/components/package.json
./packages/public/webfront/package.json
./packages/public/webpanel/package.json
./packages/containers/discord/package.json

image

Packages don't work on Windows

Hi,

I really like this extension except that it appears not to work on windows; the paths to packages are not correct for Windows.

It appears that the path to my package is created as "/Users/Josh/Projects/" but that doesn't resolve correctly; it should instead of "C:/Users/Josh/Projects/".

Thank you!

registerCommand support external parameters

like the title

vscode.commands.executeCommand('extension.select', param1, params2); 

commands.registerCommand("extension.select", (...params) => select(...params))

when use terminal command, WorkspaceFolderItem is null

Make it possible to format workspace names

What I'm looking for is simply to exclude the org name that's used in the package.json name from the displayed label.

For example in our repo all of our package names are prefixed @foo/ but it becomes very redundant when that's used as workspace name.

Maybe some combination of regexp/template would allow users to configure package names.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.