update node
diff --git a/build.gradle.kts b/build.gradle.kts
index 185c1c1..1133e4c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1089,13 +1089,21 @@
 
 plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class) {
     extensions.configure(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension::class.java) {
-        nodeVersion = "16.13.0"
+        nodeVersion = "18.0.0-v8-canary20220323849445f546"
+        nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary/"
+
         npmInstallTaskProvider?.configure {
             args += listOf("--network-concurrency", "1", "--mutex", "network")
         } ?: error("kotlinNpmInstall task should exist inside NodeJsRootExtension")
     }
 }
 
+//plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin::class) {
+//    extensions.configure(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension::class.java) {
+//        ignoreEngines = true
+//    }
+//}
+
 afterEvaluate {
     val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true
     if (cacheRedirectorEnabled) {
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 99dbeef..2ed6fba 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -7900,6 +7900,20 @@
             <sha256 value="8cf1fb277154b82d2774143be2575e1690af1b5c05e2a1b9a54b50b4efc73e8e" origin="https://nodejs.org/es/blog/release/v16.2.0/"/>
          </artifact>
       </component>
+      <component group="org.nodejs" name="node" version="18.0.0-v8-canary20220323849445f546">
+         <artifact name="node-18.0.0-v8-canary20220323849445f546-darwin-arm64.tar.gz">
+            <sha256 value="686e0cc1b39db72610ec53c9a70c3405cb0a39d9ca239b9017b34b955d6df8c4" origin="https://nodejs.org/download/v8-canary/v18.0.0-v8-canary20220323849445f546/SHASUMS256.txt"/>
+         </artifact>
+         <artifact name="node-18.0.0-v8-canary20220323849445f546-darwin-x64.tar.gz">
+            <sha256 value="ffd1c28fc0a936994d374770db024faca6cb261137dbc374e938d72b314704b8" origin="https://nodejs.org/download/v8-canary/v18.0.0-v8-canary20220323849445f546/SHASUMS256.txt"/>
+         </artifact>
+         <artifact name="node-18.0.0-v8-canary20220323849445f546-linux-x64.tar.gz">
+            <sha256 value="e3cfd1c10802f1e0a010e6e5307eae438ccef07b2537bf3e740f4abf803963c5" origin="https://nodejs.org/download/v8-canary/v18.0.0-v8-canary20220323849445f546/SHASUMS256.txt"/>
+         </artifact>
+         <artifact name="node-18.0.0-v8-canary20220323849445f546-win-x64.zip">
+            <sha256 value="02c518a1b1f7671c038e2b1ced1a880ab336f0241fea5349aa54eb9d8a349ee3" origin="https://nodejs.org/download/v8-canary/v18.0.0-v8-canary20220323849445f546/SHASUMS256.txt"/>
+         </artifact>
+      </component>
       <component group="org.openjdk.jmh" name="jmh-core" version="1.21">
          <artifact name="jmh-core-1.21.jar">
             <md5 value="87fe00275cdaa76a31f73906fc8ee9d7" origin="Generated by Gradle"/>
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt
index 89ad412..9c7a3fa 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt
@@ -41,7 +41,8 @@
                 )
                 .plus(
                     if (yarn.ignoreScripts) "--ignore-scripts" else ""
-                ).filter { it.isNotEmpty() }
+                ).filter { it.isNotEmpty() } + yarn.extraArgs
+
 
             val nodeExecutable = nodeJs.nodeExecutable
             if (!yarn.ignoreScripts) {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnEnv.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnEnv.kt
index 1b0daf5..eadd7bb 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnEnv.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnEnv.kt
@@ -17,4 +17,5 @@
     val ivyDependency: String,
     val standalone: Boolean,
     val ignoreScripts: Boolean,
+    val extraArgs: List<String>
 ) : Serializable
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnRootExtension.kt
index 9dd89c0..f264ba6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnRootExtension.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnRootExtension.kt
@@ -43,6 +43,7 @@
     var lockFileDirectory: File by Property(project.rootDir.resolve("kotlin-js-store"))
 
     var ignoreScripts by Property(true)
+    var ignoreEngines by Property(false)
 
     val yarnSetupTaskProvider: TaskProvider<YarnSetupTask>
         get() = project.tasks
@@ -99,6 +100,10 @@
             else
                 finalCommand
         }
+        val extraArgs = mutableListOf<String>()
+        if (ignoreEngines)
+            extraArgs += "--ignore-enignes"
+
         return YarnEnv(
             downloadUrl = downloadBaseUrl,
             cleanableStore = cleanableStore,
@@ -107,6 +112,7 @@
             standalone = !download,
             ivyDependency = "com.yarnpkg:yarn:$version@tar.gz",
             ignoreScripts = ignoreScripts,
+            extraArgs = extraArgs
         )
     }