diff --git a/gulpfile.ts b/gulpfile.ts
index b4ffcd702518772203e887a6443e17bcd72908a4..9a674a3eafe56b5f89666a682b2b999596e0f206 100644
--- a/gulpfile.ts
+++ b/gulpfile.ts
@@ -32,13 +32,13 @@ if (isDebug) {
 	console.warn(chalk.yellow.bold('         built script will not be compressed.'));
 }
 
-gulp.task('build', [
+gulp.task('build', gulp.parallel(
 	'build:ts',
 	'build:copy',
 	'build:client',
 	'locales',
 	'doc'
-]);
+));
 
 gulp.task('build:ts', () => {
 	const tsProject = ts.createProject('./tsconfig.json');
@@ -56,7 +56,7 @@ gulp.task('build:copy:views', () =>
 	gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
 );
 
-gulp.task('build:copy', ['build:copy:views'], () =>
+gulp.task('build:copy', gulp.parallel('build:copy:views', () =>
 	gulp.src([
 		'./build/Release/crypto_key.node',
 		'./src/const.json',
@@ -64,9 +64,9 @@ gulp.task('build:copy', ['build:copy:views'], () =>
 		'./src/**/assets/**/*',
 		'!./src/client/app/**/assets/**/*'
 	]).pipe(gulp.dest('./built/'))
-);
+));
 
-gulp.task('test', ['mocha']);
+gulp.task('test', gulp.task('mocha'));
 
 gulp.task('lint', () =>
 	gulp.src('./src/**/*.ts')
@@ -97,17 +97,17 @@ gulp.task('clean', cb =>
 	rimraf('./built', cb)
 );
 
-gulp.task('cleanall', ['clean'], cb =>
+gulp.task('cleanall', gulp.parallel('clean', cb =>
 	rimraf('./node_modules', cb)
-);
+));
 
-gulp.task('default', ['build']);
+gulp.task('default', gulp.task('build'));
 
-gulp.task('build:client', [
+gulp.task('build:client', gulp.parallel(
 	'build:client:script',
 	'build:client:styles',
 	'copy:client'
-]);
+));
 
 gulp.task('build:client:script', () => {
 	const client = require('./built/client/meta.json');