-
Notifications
You must be signed in to change notification settings - Fork 126
Deno版ダウンローダーを追加 #367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deno版ダウンローダーを追加 #367
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
とりあえずダウンローダーを置き換えるかの議論はいったん置いときまして!
TypeScriptは環境構築が大変なイメージがあるんですよね・・・。
ダウンローダーのために環境構築周りも頑張らないといけないようになるのをどうしたもんかという気持ちです!
VSCodeの設定VSCode向けの環境構築手順はおそらく以下の通りになります。
VSCode以外の設定VSCode以外だと、どちらかというとNode.js用設定との共存が面倒かなと思っています。 私はNeovimでnvim-lspconfigを使っているのですが、以下の設定で少なくともリポジトリ単位での使い分けはなんとかなっています。 local lspconfig = require('lspconfig')
lspconfig.denols.setup {}
lspconfig.tsserver.setup {
root_dir = lspconfig.util.root_pattern("package.json", "tsconfig.json", "jsconfig.json"),
single_file_support = false,
} nvim-lspconfig以外の(Neo)Vimの設定例として、Node.jsとDenoを両方使っていらっしゃるであろうNanashi.さんとらぁさんの設定も見てみたのですが、馴染みがないのでよくわからなかったです。
|
自分はcoc-tsdetectを使っていますね。(参照:coc-package.json:12) |
なるほどcocにはそんなのが… |
詳細ありがとうございます!! 正直なところ、Denoというかなりマイナーな環境を採用すべきなのかどうかという点でかなり迷っています。 ・仕様周りが高頻度で変わるのではと思っていてメンテナンスコストが高くなりそう? 2つ目はボイボ全体のスクリプトをDenoにするなどすれば軽減しそうですが、大変だよなーと…。 |
実行可能バイナリで配布したいならRustで作ってしまったほうが良かったのでは?coreのメンテナの習熟度や環境構築のことを考えるとそのほうが良いように感じました |
Rustで書くことも考えたのですが利用者にCargoのインストールを要求するため、それならdeno.exeさえあればよくて読み書きできる人が多そうなDenoの方が楽かなと思っていました。ただ考えてみるとGitHub Releasesからバイナリを配るのなら、利用者はランタイムをインストールする必要が全くもって無いんですよね。 Bash/Python/Deno(TypeScript)と比べるとRustを読み書きできる人は少なくなるというのも理由としてありましたが、それも極端な話私とqwertyさんとSuitCaseさんができればいいわけですし。 私個人としてはRustで書いたとしてもBashやPythonやDenoと比べ、読み書きしやすさが低下するという感覚は無いです。もしRustでもよいのなら、このPRを即座にcloseしてRustで書き直す用意はできています。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(ちょっと気になったところをコメントしてみました)
@qryxip そうですね。cargoのインストールが必要なのは利用者ではなく開発者なのでRustで書いても配布については問題ないはずです。 |
Co-authored-by: Nanashi. <sevenc_nanashi@yahoo.co.jp>
うーーーーーん、判断が難しいですね!! 正直なところ、シェルスクリプトでも十分可能なことをRustで書くのは流石にオーバースペック感あります。 モチベは shell script >>> Rust > Deno って感じです。(shell scriptが高いのはすでにあるからです。) という総合判断でたぶんやめたほうがいいだろうなという直感です…!🙇♂️ |
いや、latest版がほしくなるのは主に開発者で、開発者はcargo使えるから自分でビルドできますね。 ちなみになのですが、いざとなったらシェルコマンドの実行が視野に入ってくると思います。 |
こんな感じでいけるのではないかと。 use std::path::Path;
use duct::cmd;
fn extract_tgz(tgz: &Path, extract_dir: &Path) -> anyhow::Result<()> {
cmd!("tar", "xvf", tgz, "-C", extract_dir, "--strip-components=1").run()?;
Ok(())
} |
なるほどです、簡単そうですね!! もし万が一実際のコードがあまりにも複雑に感じたら再考で…!🙇♂️ |
はい。今晩作ってみようかと思います |
内容
TypeScriptの練習がてら、Deno版のダウンローダーを書いてみたのでここにぶら下げておきます。
PowerShell版のダウンローダーのメンテが厳しいのではないかという話がDiscordであったと思うのですが、Deno版ダウンローダーはそれに対する解決策の一つになると思います。利点としては次の4点でしょうか。
関連 Issue
その他