Since the TypeScript compiler preserves the input file path, it will generate x. js in the parent directory of the root directory.
Compiling TypeScript. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It offers classes, modules, and interfaces to help you build robust components.
Another way of automating the TypeScript compilation is by using command line interface or the Command Prompt. The second way is pretty simple to achieve; we just need to write a single line to watch any changes in our TypeScript file.
As you know, TypeScript files can be compiled using the tsc <file name>. ts command.
Use the option --outDir
on tsc (configured within the File Watcher in IntelliJ)
From the command line documentation
--outDir DIRECTORY Redirect output structure to the directory.
Edit
Since Typescript 1.5, this can also be set in the tsconfig.json
file:
"compilerOptions": {
"outDir": "DIRECTORY"
...
Or, add "outDir": "build"
to tsconfig.json file
Though these answers are correct you should consider whether you actually just want to hide your .js files from your IDE.
In Visual Studio Code, go to File > Preferences > Settings
or your .vscode\settings.json
file and enter:
"files.exclude": {
"**/.git": true,
"**/.DS_Store": true,
"**/*.js" : {
"when": "$(basename).ts"
},
"**/*.js.map": {
"when": "$(basename)"
}
}
The above hides .js files where a corresponding .ts file exists.
Intellij Users, compile Typescript to multiple output directories
For Intellij users this may be useful. This was how I got this to work using the built in Typescript Compiler.
Environment Info
Example Directory Structure
BEFORE COMPILE
----------------------------------------
-> JS
-> app
-> config.js //this is not generated
-> libs
-> jquery.js //this is not generated
-> plugins
-> TS
-> app
-> main.ts
-> libs
-> jquery.d.ts
-> plugins
-> somePlugin.ts
AFTER COMPILE
----------------------------------------
-> JS
-> app
-> config.js //this is not generated
-> main.js
-> libs
-> jquery.js //this is not generated
-> plugins
somePlugin.ts
-> TS
-> app
-> main.ts
-> libs
-> jquery.d.ts //this is where I kept my definition files
-> plugins
-> somePlugin.ts
Intellij Setup
C:\yourUserName\AppData\Roaming\npm\node_modules\typescript\lib
-m amd -t ES6 -outDir E:\myapp\js
E:\myapp\ts\main.ts
If this is not checked then all of your files will try to output to your outDir path.I setup package.json like this so that typing npm run start
outputs everything to build
. The source files are kept in src
. The outfile is specified by --outDir build
.
{
"name": "myapp",
"version": "0.0.1",
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w --outDir build",
"lite": "lite-server",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
},
"license": "private",
"dependencies": {
"angular2": "2.0.0-beta.0",
"systemjs": "0.19.6",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"zone.js": "0.5.10"
},
"devDependencies": {
"concurrently": "^1.0.0",
"lite-server": "^1.3.1",
"typescript": "^1.7.3"
}
}
You can exclude your build directory in tsconfig.json, though it probably isn't necessary, since there is only JS there:
{
"compilerOptions": {
"target": "ES5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"build"
]
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With