├── .gitignore
├── art
├── logo.pdn
├── first-run.png
├── context-menu.png
└── normal-run.png
├── src
├── Resources
│ ├── Icon.png
│ ├── Package.ico
│ ├── Preview.png
│ └── button.png
├── Guids.cs
├── Properties
│ └── AssemblyInfo.cs
├── ProcessHelper.cs
├── source.extension.vsixmanifest
├── FlattenPackages.vsct
├── FlattenPackagesPackage.cs
├── VSPackage.resx
└── FlattenPackages.csproj
├── .gitattributes
├── LICENSE
├── appveyor.yml
├── FlattenPackages.sln
├── README.md
└── CONTRIBUTING.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 |
4 | .vs
5 | bin
6 | obj
--------------------------------------------------------------------------------
/art/logo.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/art/logo.pdn
--------------------------------------------------------------------------------
/art/first-run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/art/first-run.png
--------------------------------------------------------------------------------
/art/context-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/art/context-menu.png
--------------------------------------------------------------------------------
/art/normal-run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/art/normal-run.png
--------------------------------------------------------------------------------
/src/Resources/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/src/Resources/Icon.png
--------------------------------------------------------------------------------
/src/Resources/Package.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/src/Resources/Package.ico
--------------------------------------------------------------------------------
/src/Resources/Preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/src/Resources/Preview.png
--------------------------------------------------------------------------------
/src/Resources/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskristensen/FlattenPackages/master/src/Resources/button.png
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 | *.sln merge=union
7 | *.csproj merge=union
8 | *.vbproj merge=union
9 | *.fsproj merge=union
10 | *.dbproj merge=union
11 |
12 | # Standard to msysgit
13 | *.doc diff=astextplain
14 | *.DOC diff=astextplain
15 | *.docx diff=astextplain
16 | *.DOCX diff=astextplain
17 | *.dot diff=astextplain
18 | *.DOT diff=astextplain
19 | *.pdf diff=astextplain
20 | *.PDF diff=astextplain
21 | *.rtf diff=astextplain
22 | *.RTF diff=astextplain
23 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2015 Mads Kristensen
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
--------------------------------------------------------------------------------
/src/Guids.cs:
--------------------------------------------------------------------------------
1 | // Guids.cs
2 | // MUST match guids.h
3 | using System;
4 |
5 | namespace MadsKristensen.FlattenPackages
6 | {
7 | static class GuidList
8 | {
9 | public const string guidFlattenPackagesPkgString = "96559c66-f326-40e2-95c1-449a80387524";
10 | public const string guidFlattenPackagesCmdSetString = "d09a3dfa-d8e5-473a-8093-1ff848784077";
11 |
12 | public static readonly Guid guidFlattenPackagesCmdSet = new Guid(guidFlattenPackagesCmdSetString);
13 | };
14 |
15 | static class PkgCmdIDList
16 | {
17 | public const uint cmdidFlattenPackages = 0x100;
18 | };
19 | }
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | image: Visual Studio 2017 RC
2 |
3 | install:
4 | - ps: (new-object Net.WebClient).DownloadString("https://raw.github.com/madskristensen/ExtensionScripts/master/AppVeyor/vsix.ps1") | iex
5 |
6 | before_build:
7 | - ps: Vsix-IncrementVsixVersion | Vsix-UpdateBuildVersion
8 | - ps: Vsix-TokenReplacement src\FlattenPackagesPackage.cs 'Version = "([0-9\\.]+)"' 'Version = "{version}"'
9 |
10 | build_script:
11 | - msbuild /p:configuration=Release /p:DeployExtension=false /p:ZipPackageCompressionLevel=normal /v:m
12 |
13 | after_test:
14 | - ps: Vsix-PushArtifacts | Vsix-PublishToGallery
15 |
16 | before_deploy:
17 | - ps: Vsix-CreateChocolatyPackage -packageId flattenpackages
18 |
19 | deploy:
20 | - provider: Environment
21 | name: Chocolatey
22 | on:
23 | branch: master
24 | appveyor_repo_commit_message_extended: /\[release\]/
--------------------------------------------------------------------------------
/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using System.Resources;
4 | using System.Runtime.InteropServices;
5 | using MadsKristensen.FlattenPackages;
6 |
7 | [assembly: AssemblyTitle(FlattenPackagesPackage.Name)]
8 | [assembly: AssemblyDescription("Flattens the node_modules folder hierarchy by using the 'flatten-packages' npm package behind the scenes. Works with long paths.")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("Mads Kristensen")]
11 | [assembly: AssemblyProduct(FlattenPackagesPackage.Name)]
12 | [assembly: AssemblyCopyright("")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 | [assembly: ComVisible(false)]
16 | [assembly: CLSCompliant(false)]
17 | [assembly: NeutralResourcesLanguage("en-US")]
18 |
19 | [assembly: AssemblyVersion(FlattenPackagesPackage.Version)]
20 | [assembly: AssemblyFileVersion(FlattenPackagesPackage.Version)]
--------------------------------------------------------------------------------
/src/ProcessHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO;
4 |
5 | namespace MadsKristensen.FlattenPackages
6 | {
7 | class ProcessHelper
8 | {
9 | public static bool RunProcessSync(string arguments, string directory)
10 | {
11 | ProcessStartInfo start = new ProcessStartInfo("cmd", arguments)
12 | {
13 | WorkingDirectory = directory,
14 | };
15 |
16 | using (Process p = new Process())
17 | {
18 | p.StartInfo = start;
19 | p.Start();
20 | p.WaitForExit();
21 |
22 | return true;
23 | }
24 | }
25 |
26 | public static bool IsNodeModuleInstalled()
27 | {
28 | string env = Environment.GetEnvironmentVariable("PATH");
29 | string[] paths = env.Split(';');
30 |
31 | foreach (string path in paths)
32 | {
33 | string cmd = Path.Combine(path, "flatten-packages.cmd");
34 |
35 | if (File.Exists(cmd))
36 | return true;
37 | }
38 |
39 | return false;
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/FlattenPackages.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.31101.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlattenPackages", "src\FlattenPackages.csproj", "{77150F07-DC73-4D7D-B101-E217F46619EB}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{934516D8-E094-4A4B-B6DC-DA2B9569647C}"
9 | ProjectSection(SolutionItems) = preProject
10 | .gitignore = .gitignore
11 | appveyor.yml = appveyor.yml
12 | CONTRIBUTING.md = CONTRIBUTING.md
13 | README.md = README.md
14 | EndProjectSection
15 | EndProject
16 | Global
17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
18 | Debug|Any CPU = Debug|Any CPU
19 | Release|Any CPU = Release|Any CPU
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {77150F07-DC73-4D7D-B101-E217F46619EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {77150F07-DC73-4D7D-B101-E217F46619EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {77150F07-DC73-4D7D-B101-E217F46619EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {77150F07-DC73-4D7D-B101-E217F46619EB}.Release|Any CPU.Build.0 = Release|Any CPU
26 | EndGlobalSection
27 | GlobalSection(SolutionProperties) = preSolution
28 | HideSolutionNode = FALSE
29 | EndGlobalSection
30 | EndGlobal
31 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Flatten Packages for Visual Studio
2 |
3 | [](https://ci.appveyor.com/project/madskristensen/flattenpackages)
4 |
5 | Flattens `node_modules` folder to avoid long path issues on Windows.
6 |
7 | **Important!** [Node.js](http://nodejs.org) MUST be installed for this to work.
8 |
9 | Download this extension from the [VS Gallery](https://visualstudiogallery.msdn.microsoft.com/cd0b1938-4513-4e57-b9b7-c674b4a20e79)
10 | or get the [nightly build](http://vsixgallery.com/extension/96559c66-f326-40e2-95c1-449a80387524/).
11 |
12 | ### Features
13 |
14 | The extension adds a button in the context-menu of Solution Explorer.
15 |
16 | 
17 |
18 | It shows up when you right-click `package.json` or any folder containing
19 | a subfolder called `node_modules`.
20 |
21 | The first time you run this extension it will download the npm package
22 | [flatten-packages](https://www.npmjs.com/package/flatten-packages) if
23 | you don't already have it installed.
24 |
25 | 
26 |
27 | When the flatten-packages modules is installed (it takes ~5 seconds),
28 | the extension will run the command to flatten the package hierarchy
29 | in the `node_modules` folder.
30 |
31 | 
32 |
33 | Since the extension uses a Node module behind the scenes, the package
34 | flattening will work with long paths that Windows and Visual Studio
35 | normally can't handle.
--------------------------------------------------------------------------------
/src/source.extension.vsixmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Flatten Packages
6 | Flattens the node_modules folder hierarchy by using the "flatten-packages" npm package behind the scenes. Works with long paths.
7 |
8 | Requires Node.js installed on the machine
9 | Resources\LICENSE
10 | Resources\Icon.png
11 | Resources\Preview.png
12 | npm, node, modules
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/FlattenPackages.vsct:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
37 |
40 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/FlattenPackagesPackage.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel.Design;
3 | using System.IO;
4 | using System.Runtime.InteropServices;
5 | using System.Windows.Forms;
6 | using EnvDTE;
7 | using EnvDTE80;
8 | using Microsoft.VisualStudio.Shell;
9 | using Microsoft.VisualStudio.Shell.Interop;
10 |
11 | namespace MadsKristensen.FlattenPackages
12 | {
13 | [PackageRegistration(UseManagedResourcesOnly = true)]
14 | [InstalledProductRegistration("#110", "#112", Version, IconResourceID = 400)]
15 | [ProvideMenuResource("Menus.ctmenu", 1)]
16 | [ProvideAutoLoad(UIContextGuids80.SolutionExists)]
17 | [Guid(GuidList.guidFlattenPackagesPkgString)]
18 | public sealed class FlattenPackagesPackage : Package
19 | {
20 | public const string Version = "1.0";
21 | public const string Name = "Flatten Packages";
22 | private DTE2 _dte;
23 | private string _directory;
24 |
25 | protected override void Initialize()
26 | {
27 | base.Initialize();
28 | _dte = GetService(typeof(DTE)) as DTE2;
29 |
30 | // Add our command handlers for menu (commands must exist in the .vsct file)
31 | OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
32 | if (null != mcs)
33 | {
34 | CommandID menuCommandID = new CommandID(GuidList.guidFlattenPackagesCmdSet, (int)PkgCmdIDList.cmdidFlattenPackages);
35 | OleMenuCommand menuItem = new OleMenuCommand(ButtonClicked, menuCommandID);
36 | menuItem.BeforeQueryStatus += BeforeButtonClicked;
37 | mcs.AddCommand(menuItem);
38 | }
39 | }
40 |
41 | private void BeforeButtonClicked(object sender, EventArgs e)
42 | {
43 | OleMenuCommand button = (OleMenuCommand)sender;
44 | button.Visible = false;
45 |
46 | string item = GetSelectedItemPath();
47 |
48 | if (string.IsNullOrEmpty(item))
49 | return;
50 |
51 | string directory = item;
52 |
53 | if (File.Exists(item))
54 | {
55 | if (Path.GetFileName(item) == "package.json")
56 | directory = Path.GetDirectoryName(item);
57 | else
58 | return;
59 | }
60 |
61 | DirectoryInfo dir = new DirectoryInfo(directory);
62 | if (dir.Name.Equals("node_modules", StringComparison.OrdinalIgnoreCase))
63 | directory = dir.Parent.FullName;
64 |
65 | string nodeModules = Path.Combine(directory, "node_modules");
66 |
67 | if (!Directory.Exists(nodeModules))
68 | return;
69 |
70 | _directory = directory;
71 |
72 | if (Directory.Exists(_directory))
73 | button.Visible = true;
74 | }
75 |
76 | private void ButtonClicked(object sender, EventArgs e)
77 | {
78 | bool moduleInstalled = ProcessHelper.IsNodeModuleInstalled();
79 | if (!moduleInstalled)
80 | {
81 | string firstTime = "The first time you run this command I will have to install the 'flatten-packages' npm package globally. \r\r I'll run 'npm install flatten-packages -g' \r\rDo you wish to install it (internet connection required)?";
82 | var result = MessageBox.Show(firstTime, Name, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
83 |
84 | if (result != DialogResult.OK)
85 | return;
86 |
87 | moduleInstalled = ProcessHelper.RunProcessSync("/c npm install flatten-packages -g", _directory);
88 | }
89 |
90 | if (!moduleInstalled)
91 | return;
92 |
93 | string dir = Path.Combine(_directory, "node_modules");
94 |
95 | string question = "This will flatten the packages in " + dir + " \r\r Do you want to continue?";
96 | var answer = MessageBox.Show(question, Name, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
97 |
98 | if (answer == DialogResult.OK)
99 | ProcessHelper.RunProcessSync("/k flatten-packages", _directory);
100 | }
101 |
102 | private string GetSelectedItemPath()
103 | {
104 | try
105 | {
106 | var items = (Array)_dte.ToolWindows.SolutionExplorer.SelectedItems;
107 | foreach (UIHierarchyItem selItem in items)
108 | {
109 | var item = selItem.Object as ProjectItem;
110 |
111 | if (item != null && item.Properties != null)
112 | return item.Properties.Item("FullPath").Value.ToString();
113 | }
114 | }
115 | catch { /* Something weird is happening. Ignore this and return null */}
116 |
117 | return null;
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Looking to contribute something? **Here's how you can help.**
4 |
5 | Please take a moment to review this document in order to make the contribution
6 | process easy and effective for everyone involved.
7 |
8 | Following these guidelines helps to communicate that you respect the time of
9 | the developers managing and developing this open source project. In return,
10 | they should reciprocate that respect in addressing your issue or assessing
11 | patches and features.
12 |
13 |
14 | ## Using the issue tracker
15 |
16 | The issue tracker is the preferred channel for [bug reports](#bug-reports),
17 | [features requests](#feature-requests) and
18 | [submitting pull requests](#pull-requests), but please respect the
19 | following restrictions:
20 |
21 | * Please **do not** use the issue tracker for personal support requests. Stack
22 | Overflow is a better place to get help.
23 |
24 | * Please **do not** derail or troll issues. Keep the discussion on topic and
25 | respect the opinions of others.
26 |
27 | * Please **do not** open issues or pull requests which *belongs to* third party
28 | components.
29 |
30 |
31 | ## Bug reports
32 |
33 | A bug is a _demonstrable problem_ that is caused by the code in the repository.
34 | Good bug reports are extremely helpful, so thanks!
35 |
36 | Guidelines for bug reports:
37 |
38 | 1. **Use the GitHub issue search** — check if the issue has already been
39 | reported.
40 |
41 | 2. **Check if the issue has been fixed** — try to reproduce it using the
42 | latest `master` or development branch in the repository.
43 |
44 | 3. **Isolate the problem** — ideally create an
45 | [SSCCE](http://www.sscce.org/) and a live example.
46 | Uploading the project on cloud storage (OneDrive, DropBox, et el.)
47 | or creating a sample GitHub repository is also helpful.
48 |
49 |
50 | A good bug report shouldn't leave others needing to chase you up for more
51 | information. Please try to be as detailed as possible in your report. What is
52 | your environment? What steps will reproduce the issue? What browser(s) and OS
53 | experience the problem? Do other browsers show the bug differently? What
54 | would you expect to be the outcome? All these details will help people to fix
55 | any potential bugs.
56 |
57 | Example:
58 |
59 | > Short and descriptive example bug report title
60 | >
61 | > A summary of the issue and the Visual Studio, browser, OS environments
62 | > in which it occurs. If suitable, include the steps required to reproduce the bug.
63 | >
64 | > 1. This is the first step
65 | > 2. This is the second step
66 | > 3. Further steps, etc.
67 | >
68 | > `` - a link to the project/file uploaded on cloud storage or other publicly accessible medium.
69 | >
70 | > Any other information you want to share that is relevant to the issue being
71 | > reported. This might include the lines of code that you have identified as
72 | > causing the bug, and potential solutions (and your opinions on their
73 | > merits).
74 |
75 |
76 | ## Feature requests
77 |
78 | Feature requests are welcome. But take a moment to find out whether your idea
79 | fits with the scope and aims of the project. It's up to *you* to make a strong
80 | case to convince the project's developers of the merits of this feature. Please
81 | provide as much detail and context as possible.
82 |
83 |
84 | ## Pull requests
85 |
86 | Good pull requests, patches, improvements and new features are a fantastic
87 | help. They should remain focused in scope and avoid containing unrelated
88 | commits.
89 |
90 | **Please ask first** before embarking on any significant pull request (e.g.
91 | implementing features, refactoring code, porting to a different language),
92 | otherwise you risk spending a lot of time working on something that the
93 | project's developers might not want to merge into the project.
94 |
95 | Please adhere to the [coding guidelines](#code-guidelines) used throughout the
96 | project (indentation, accurate comments, etc.) and any other requirements
97 | (such as test coverage).
98 |
99 | Adhering to the following process is the best way to get your work
100 | included in the project:
101 |
102 | 1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
103 | and configure the remotes:
104 |
105 | ```bash
106 | # Clone your fork of the repo into the current directory
107 | git clone https://github.com//.git
108 | # Navigate to the newly cloned directory
109 | cd
110 | # Assign the original repo to a remote called "upstream"
111 | git remote add upstream https://github.com/madskristensen/.git
112 | ```
113 |
114 | 2. If you cloned a while ago, get the latest changes from upstream:
115 |
116 | ```bash
117 | git checkout master
118 | git pull upstream master
119 | ```
120 |
121 | 3. Create a new topic branch (off the main project development branch) to
122 | contain your feature, change, or fix:
123 |
124 | ```bash
125 | git checkout -b
126 | ```
127 |
128 | 4. Commit your changes in logical chunks. Please adhere to these [git commit
129 | message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
130 | or your code is unlikely be merged into the main project. Use Git's
131 | [interactive rebase](https://help.github.com/articles/interactive-rebase)
132 | feature to tidy up your commits before making them public. Also, prepend name of the feature
133 | to the commit message. For instance: "SCSS: Fixes compiler results for IFileListener.\nFixes `#123`"
134 |
135 | 5. Locally merge (or rebase) the upstream development branch into your topic branch:
136 |
137 | ```bash
138 | git pull [--rebase] upstream master
139 | ```
140 |
141 | 6. Push your topic branch up to your fork:
142 |
143 | ```bash
144 | git push origin
145 | ```
146 |
147 | 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
148 | with a clear title and description against the `master` branch.
149 |
150 |
151 | ## Code guidelines
152 |
153 | - Always use proper indentation.
154 | - In Visual Studio under `Tools > Options > Text Editor > C# > Advanced`, make sure
155 | `Place 'System' directives first when sorting usings` option is enabled (checked).
156 | - Before committing, organize usings for each updated C# source file. Either you can
157 | right-click editor and select `Organize Usings > Remove and sort` OR use extension
158 | like [BatchFormat](http://visualstudiogallery.msdn.microsoft.com/a7f75c34-82b4-4357-9c66-c18e32b9393e).
159 | - Before committing, run Code Analysis in `Debug` configuration and follow the guidelines
160 | to fix CA issues. Code Analysis commits can be made separately.
161 |
--------------------------------------------------------------------------------
/src/VSPackage.resx:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | text/microsoft-resx
120 |
121 |
122 | 2.0
123 |
124 |
125 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
126 |
127 |
128 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
129 |
130 |
131 |
132 | Flatten Packages
133 |
134 |
135 | Flattens the node_modules folder hierarchy by using the "flatten-packages" npm package behind the scenes. Works with long paths
136 |
137 |
138 | Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
139 |
140 |
--------------------------------------------------------------------------------
/src/FlattenPackages.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(VisualStudioVersion)
5 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
6 |
7 |
8 |
9 | Debug
10 | AnyCPU
11 | 2.0
12 | {77150F07-DC73-4D7D-B101-E217F46619EB}
13 | {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
14 | Library
15 | Properties
16 | MadsKristensen.FlattenPackages
17 | FlattenPackages
18 | v4.5
19 | Program
20 | $(DevEnvDir)\devenv.exe
21 | /rootsuffix Exp
22 | Normal
23 | true
24 |
25 |
26 | true
27 | full
28 | false
29 | bin\Debug\
30 | DEBUG;TRACE
31 | prompt
32 | 4
33 |
34 |
35 | pdbonly
36 | true
37 | bin\Release\
38 | TRACE
39 | prompt
40 | 4
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | True
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | {80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}
61 | 8
62 | 0
63 | 0
64 | primary
65 | False
66 | False
67 |
68 |
69 | {26AD1324-4B7C-44BC-84F8-B86AED45729F}
70 | 10
71 | 0
72 | 0
73 | primary
74 | False
75 | False
76 |
77 |
78 | {1A31287A-4D7D-413E-8E32-3B374931BD89}
79 | 8
80 | 0
81 | 0
82 | primary
83 | False
84 | False
85 |
86 |
87 | {2CE2370E-D744-4936-A090-3FFFE667B0E1}
88 | 9
89 | 0
90 | 0
91 | primary
92 | False
93 | False
94 |
95 |
96 | {1CBA492E-7263-47BB-87FE-639000619B15}
97 | 8
98 | 0
99 | 0
100 | primary
101 | False
102 | False
103 |
104 |
105 | {00020430-0000-0000-C000-000000000046}
106 | 2
107 | 0
108 | 0
109 | primary
110 | False
111 | False
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | true
123 | VSPackage
124 |
125 |
126 |
127 |
128 | Resources\LICENSE
129 | true
130 |
131 |
132 | Designer
133 |
134 |
135 |
136 |
137 | Menus.ctmenu
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 | true
146 |
147 |
148 |
149 | true
150 |
151 |
152 |
153 | true
154 |
155 |
156 |
157 |
164 |
--------------------------------------------------------------------------------