-
Notifications
You must be signed in to change notification settings - Fork 0
1.0 | Project structure
๐Dagor-Shader-Language-Support-for-Visual-Studio-Code
โโโ ๐.github
โ โโโ ๐ISSUE_TEMPLATE
โ โโโ ๐workflows
โ โ โโโ ๐build.yml
โโโ ๐.husky
โโโ ๐.vscode
โ โโโ ๐extensions.json
โ โโโ ๐launch.json
โ โโโ ๐settings.json
โ โโโ ๐tasks.json
โโโ ๐Dagor-Shader-Language-Server
โโโ ๐node_modules
โโโ ๐out
โโโ ๐res
โ โโโ ๐screenshots
โ โโโ ๐dshl-icon.svg
โ โโโ ๐hlsl-icon.svg
โ โโโ ๐icon.png
โ โโโ ๐icon.svg
โโโ ๐scrits
โโโ ๐src
โ โโโ ๐test
โโโ ๐testFixture
โโโ ๐vscodeignore
โ โโโ ๐linux.vscodeignore
โ โโโ ๐macos.vscodeignore
โ โโโ ๐universal.vscodeignore
โ โโโ ๐windows.vscodeignore
โโโ ๐.editorconfig
โโโ ๐.eslintignore
โโโ ๐.eslintrc.js
โโโ ๐.gitattributes
โโโ ๐.gitignore
โโโ ๐.gitmodules
โโโ ๐.prettierignore
โโโ ๐.prettierrc.json
โโโ ๐.vscodeignore
โโโ ๐CHANGELOG.md
โโโ ๐LICENSE
โโโ ๐package-lock.json
โโโ ๐package.json
โโโ ๐README.md
โโโ ๐tsconfig.json
โโโ ๐tsconfig.test.json
โโโ ๐webpack.config.js
- ๐Regular folder
- ๐A folder that contains generated files, build artifacts, or downloadable packages
- ๐File
This section describes the more important files and folders in the project.
The .github/workflows folder contains the configurations of the GitHub Actions CI pipeline. The build.yml file configures the CI pipeline, which runs on Pull Requests, and checks the code with static analysis tools. The ISSUE_TEMPLATE folder contains templates for the GitHub issues.
The .husky folder contains configurations about the pre-commit hook, and you never have to touch these files.
The .vscode folder contains VS Code-specific configurations. The extensions.json contains the recommended extensions to this project, VS Code will offer you to install them when you open the workspace. The launch.json contains configurations about how to start VS Code, when you want to run either the web or the desktop extension. Also this file contains information about running the tests, debugging the extension and the ANTLR grammars. The settings.json contains workspace-specific settings, for example, to make Prettier the default formatter. The tasks.json contains configurations about tasks like how to build the code or how to run the tests.
The Dagor-Shader-Language-Server folder contains the language server (don't forget to use the --recursive flag when you clone the repository). If you need more information about it, read the language server's wiki pages.
The node_modules folder will contain the project's dependencies, defined in the package.json file.
The out folder will contain both the desktop and the web extensions' final JavaScript code and the mappings to the original TypeScript source code, after you build the extension.
The res folder contains the resources that you want to include in the packages. The screenshots folder contains illustrations for the README.md file. The dshl-icon.svg and hlsl-icon.svg files are the files' icons in VS Code. icon.svg is the extension's original icon which is not used, it's there so that we can edit it. icon.png is the png version of the previous file, and this is the actual icon of the extension.
The scripts folder contains a generated file which helps running the tests, you never have to touch this file.
The src folder contains the extension's source code, and the test folder the E2E tests.
The testFixtures folder contains workspaces where the E2E tests can run.
The vscodeignore folder contains the configurations of which files to include in the extension packages, based on the target: linux.vscodeignore, macos.vscodeignore, universal.vscodeignore, and windows.vscodeignore.
The .editorconfig, .prettierignore, and the .prettierrc.json files configure formatting. The .eslintrc.js, and the .eslintignore files configure the static analysis tools. The .gitignore, .gitattributes, and the .gitmodules files configure git, describing what files to include in commits, how to handle submodules, and newline characters.
The .vscodeignore file is basically a safeguard, which makes packaging fail if you use the default configuration. Instead, use the packaging scripts defined in the package.json file, which uses the real configurations in the vscodeignore folder.
The README.md file contains the description of the extension, the CHANGELOG.md file the detailed list of changes for each version, and the LICENSE file contains the extension's license.
The tsconfig.json configures the TypeScript Compiler, and the webpack.config.js file configures Webpack how to build and bundle the source code. Webpack builds the language server as well, so you don't have to build it manually (but you have to generate code). The tsconfig.test.json is the same as tsconfig.json, but for the E2E tests.
The package.json file is the heart of the extension, and it contains many things. It defines the project's dependencies, scripts, and metadata, for example, the extension's name, version, commands, file extensions, keywords, and a lot more. The package-lock.json is a generated file, and you shouldn't modify it. It ensures consistent builds.
- VS Code documentation: Extension anatomy
- VS Code documentation: Extension manifest
- VS Code documentation: Integrate with External Tools via Tasks
- VS Code documentation: Debugging
- VS Code documentation: User and Workspace Settings
- VS Code documentation: Extension Marketplace
- npm Docs: package.json
- npm Docs: package-lock.json
- git documentation: gitignore
- git documentation: gitattributes
- git documentation: submodules