Security News
NIST Misses 2024 Deadline to Clear NVD Backlog
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.
The tsc-watch npm package is a utility that allows you to run the TypeScript compiler (tsc) in watch mode and execute custom scripts when certain events occur, such as when compilation starts, succeeds, or fails. This is particularly useful for automating tasks during development, such as running tests or restarting a server.
Run TypeScript compiler in watch mode
This feature allows you to run the TypeScript compiler in watch mode, which means it will automatically recompile your TypeScript files whenever they change. The `--onSuccess` flag specifies a command to run whenever the compilation succeeds. In this example, it runs a Node.js script located at `./dist/index.js`.
tsc-watch --onSuccess "node ./dist/index.js"
Run custom scripts on compilation failure
This feature allows you to specify a command to run whenever the TypeScript compilation fails. In this example, it simply echoes 'Compilation Failed!' to the console.
tsc-watch --onFailure "echo Compilation Failed!"
Run custom scripts on compilation start
This feature allows you to specify a command to run whenever the TypeScript compilation starts. In this example, it echoes 'Compilation Started!' to the console.
tsc-watch --onCompilationStarted "echo Compilation Started!"
Nodemon is a utility that monitors for any changes in your source and automatically restarts your server. It is language-agnostic and can be used with any executable, not just TypeScript. Unlike tsc-watch, nodemon does not handle TypeScript compilation by itself; you would need to use it in conjunction with the TypeScript compiler.
ts-node-dev is a development tool that combines ts-node and nodemon. It watches for changes in TypeScript files and restarts the Node.js process automatically. Unlike tsc-watch, ts-node-dev directly executes TypeScript files without needing a separate compilation step.
Webpack is a module bundler that can be configured to watch for changes in your files and recompile your project. With the appropriate loaders, it can handle TypeScript files. Webpack is more complex and powerful than tsc-watch, offering features like code splitting and hot module replacement.
tsc-watch
starts a TypeScript compiler with --watch
parameter, with the ability to react to compilation status.
tsc-watch
was created to allow an easy dev process with TypeScript. Commonly used to restart a node server, similar to nodemon but for TypeScript.
Argument | Description |
---|---|
--onSuccess COMMAND | Executes COMMAND on every successful compilation. |
--onFirstSuccess COMMAND | Executes COMMAND on the first successful compilation. |
--onFailure COMMAND | Executes COMMAND on every failed compilation. |
--onCompilationStarted COMMAND | Executes COMMAND on every compilation start event (initial and incremental). |
--onCompilationComplete COMMAND | Executes COMMAND on every successful or failed compilation. |
--maxNodeMem | Calls node with a specific memory limit max_old_space_size , to use if your project needs more memory. |
--noColors | By default tsc-watch adds colors the output with green on success, and in red on failure. Add this argument to prevent that. |
--noClear | In watch mode the tsc compiler clears the screen before reportingAdd this argument to prevent that. |
--silent | Do not print any messages on stdout. |
--compiler PATH | The PATH will be used instead of typescript compiler.Default is typescript/bin/tsc |
Notes:
That all the above COMMAND
s will be killed on process exit. (Using SIGTERM
)
A COMMAND
is a single command and not multi command like script1.sh && script2.sh
Any child process (COMMAND
) will be terminated before creating a new one.
npm install tsc-watch --save-dev
## for command-line usage
npm install -g typescript tsc-watch
## Watching a project (with tsconfig.json)
tsc-watch --onSuccess "node ./dist/server.js"
## Beep on failure
tsc-watch --onFailure "echo Beep! Compilation Failed"
## Watching a single file
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
## Custom compiler
tsc-watch --onSuccess "node ./dist/server.js" --compiler my-typescript/bin/tsc
"dev-server": "tsc-watch --noClear -p ./src/tsconfig.json --onSuccess \"node ./dist/server.js\"",
You can see a detailed example here
The client is implemented as an instance of Node.JS
's EventEmitter
, with the following events:
started
- Emitted upon the compilation start (initial or incremental).first_success
- Emitted upon first successful compilation.subsequent_success
- Emitted upon every subsequent successful compilation.compile_errors
- Emitted upon every failing compilation.file_emitted
- Emitted upon every file transpiled if --listEmittedFiles
is used.Once subscribed to the relevant events, start the client by running watch.start()
To kill the client, run watch.kill()
Example usage:
const TscWatchClient = require('tsc-watch/client');
const watch = new TscWatchClient();
watch.on('started', () => {
console.log('Compilation started');
});
watch.on('first_success', () => {
console.log('First success!');
});
watch.on('success', () => {
// Your code goes here...
});
watch.on('compile_errors', () => {
// Your code goes here...
});
watch.start('--project', '.');
try {
// do something...
} catch (e) {
watch.kill(); // Fatal error, kill the compiler instance.
}
Notes:
onSuccess
) COMMAND
will not run if the compilation failed.tsc-watch
is using the currently installed TypeScript compiler.tsc-watch
is not changing the compiler, just adds the new arguments, compilation is the same, and all other arguments are the same.FAQs
The TypeScript compiler with onSuccess command
The npm package tsc-watch receives a total of 455,116 weekly downloads. As such, tsc-watch popularity was classified as popular.
We found that tsc-watch demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.