1
Fork 0
mirror of https://github.com/RGBCube/nu_scripts synced 2025-08-01 06:37:46 +00:00

fix(npm): update incompatible npm scripts (#1137)

I use Nushell and npm, and noticed that the npm section hasn't been
updated for a long time, to the point where it no longer works with
current npm versions. In fact, the current script produces the following
result:

![image](https://github.com/user-attachments/assets/272a6a37-c623-452a-94ab-2f3c0ee54beb)

So I've updated the npm-related scripts to fix this issue. Now it works
correctly:

![image](https://github.com/user-attachments/assets/fcf8b590-0ede-4571-bd52-611cf4c9fdd3)


Additionally, since npm -l | lines generates over 900 lines of output,
this causes each run to take a long time (at least on my machine).
Therefore, I've implemented caching using stor to store the results,
which significantly reduces the execution time for subsequent calls.
With caching enabled, the delay is now barely noticeable.
This commit is contained in:
gin-lsl 2025-06-25 06:09:03 +08:00 committed by GitHub
parent 32cdc96414
commit 156a0110c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,11 +1,22 @@
def "nu-complete npm" [] { def "nu-complete npm" [] {
^npm -l let db = stor open
|lines
|find 'Run "' try {
|str trim # query commanders from in-mem db
|split column -c ' ' $db | query db "SELECT * FROM npm_commanders_table"
|get column4 } catch {
|str replace '"' '' # if catched error, create table and insert all data
stor create --table-name npm_commanders_table --columns { value: str, description: str }
let npm_commanders = ^npm -l
| lines
| where $it =~ '\s{4}[a-z\-]+.*\s{4,}'
| parse -r '\s*(?P<value>[^ ]+)\s*(?P<description>\w.*)'
$npm_commanders | stor insert --table-name npm_commanders_table
$npm_commanders
}
} }
export extern "npm" [ export extern "npm" [
@ -14,8 +25,9 @@ export extern "npm" [
def "nu-complete npm run" [] { def "nu-complete npm run" [] {
open ./package.json open ./package.json
|get scripts | get scripts
|columns | transpose
| rename value description
} }
export extern "npm run" [ export extern "npm run" [