Skip to content

Project Organization

Jake Chitel edited this page Feb 9, 2018 · 3 revisions

The repo is split into the following directories, with some files to highlight:

  • /: The root directory, containing high-level configuration files, fairly standard.
    • .editorconfig: Editor configuration, consumed by supporting editors (I believe VS Code supports this?)
    • .git*: Git configuration files. I should be able to ignore these
    • .mailmap: Seems to be a sort of address book for contributors
    • .npmignore: I've never dealt with publishing to NPM before, but I believe this specifies files to be ignored from an NPM package distribution, effectively controlling exactly what gets installed when a user installs the package. Seems like everything but bin/, lib/, and some top-level files are ignored.
    • .travis.yml: Travis build configuration file. Not used explicitly anywhere else so it can be assumed that this is just used by Travis. Should be able to ignore this.
    • AUTHORS.md: List of contributors
    • CONTRIBUTING.md: Instructions for contributors
    • CopyrightNotice.txt: Pretty self-explanatory
    • Gulpfile.ts: See "Gulp" section.
    • issue_template.md: Issue template for GitHub. Not sure why this isn't under .github/, but whatever
    • Jakefile.js: See "Jake" section.
    • jenkins.sh: Jenkins build script, not sure what calls it aside from netci.groovy.
    • LICENSE.txt: The TypeScript license file.
    • netci.groovy: Calls jenkins.sh, not referenced anywhere in the codebase.
    • package-lock.json: NPM package lock file. This file should never be marked modified unless dependencies are added.
    • package.json: See "package.json" section.
    • pull_request_template.md: Pull request template for GitHub. Not sure why this isn't under .github/, but whatever
    • README.md: TypeScript's main README. I shouldn't modify this.
    • ThirdPartyNoticeText.txt: Legal garbage
    • tslint.json: TSLint configuration
  • /.vscode/: Contains VS Code task configurations
  • /bin/: TypeScript's entry-point files
    • tsc: TypeScript compiler (calls lib/tsc.js)
    • tsserver: TypeScript language server (calls lib/tsserver.js)
  • /doc/: Miscellaneous documentation (links to external documentation, and the spec, which is extremely outdated)
  • /lib/: Contains the latest built typescript library files, for use for compiling fresh copies of the source. Also the destination directory for compiled results.
    • {locale}/: A subdirectory for each locale supported by typescript. Each contains only a diagnosticMessages.generated.json file containing localized messages.
    • lib.*.d.ts: All library type definition files available to programs written in typescript
    • *.d.ts: Internal typescript type definitions (?)
    • *.js: Compiled typescript libraries (all?)
  • /scripts/: Local build/utility scripts, can probably ignore these
  • /src/: The typescript source code
    • compiler/: Source code for compilation (?)
    • harness/: Test harness (?)
    • lib/: Source type definition files
    • loc/: Source data for localized messages
    • server/: Source code for language server
    • services/: No clue what this directory is for, generally (?)
    • tsconfig-base.json: Base config, extended by a tsconfig in each subdirectory
  • /tests/: All sorts of tests (TODO)
Clone this wiki locally