[解決済み] DENOでnpmモジュールを使うには?
質問
Denoは超カッコイイです。午前中に見て、今すぐdenoに移行したいです。私は既存のnodejsスクリプトをdenoに移行しようとしていました。誰かdenoでnpmモジュールを使用する方法について私を助けることができます。私はesprimaモジュールが必要です。 これは、パッケージが https://github.com/denoland/deno_third_party/tree/master/node_modules がありますが、それをどう使うのかがわかりません。
どのように解決するのですか?
デノでは
ノード互換性ライブラリ
を使用しないいくつかの NPM パッケージを使用できるようにします。
非ポリフィルドのNode.jsのAPI
. これにより、以下のことが可能になります。
require
を使用することで、パッケージを
https://deno.land/std/node/module.ts
以下は、動作が
deno 1.0.0
import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);
const esprima = require("esprima");
const program = 'const answer = 42';
console.log(esprima.tokenize(program))
上記のコードでは
esprima
から
node_modules/
.
実行するには
--allow-read
フラグ
deno run --allow-read esprima.js
にのみ制限することができます。
node_modules
deno run --allow-read=node_modules esprima.js
どの出力か。
[
{ type: "Keyword", value: "const" },
{ type: "Identifier", value: "answer" },
{ type: "Punctuator", value: "=" },
{ type: "Numeric", value: "42" }
]
注意
で使用される多くのAPIは
std/
はまだ
不安定
で実行する必要があるかもしれません。
--unstable
のフラグを立てて実行する必要があるかもしれません。
そのプロジェクト全体はすでにTypeScriptで書かれており、依存関係を使用していないので、Denoに適合させるのは非常に簡単でしょう。必要なのは
.ts
拡張を
インポートした
.
また、プロジェクトをフォークして変更することもできます。
// import { CommentHandler } from './comment-handler';
import { CommentHandler } from './comment-handler.ts';
// ...
してもらったら、あとはやるだけ。
// Ideally they would issue a tagged release and you'll use that instead of master
import esprima from 'https://raw.githubusercontent.com/jquery/esprima/master/src/esprima.ts';
const program = 'const answer = 42';
console.log(esprima.tokenize(program))
代替
を使用することもできます。
https://jspm.io/
で、NPM モジュールを ES モジュールに変換します。
npm上のすべてのモジュールは、ESモジュールに変換されます。 CommonJS互換で、ストリクトモードへの変換も可能です。
import esprima from "https://dev.jspm.io/esprima";
const program = 'const answer = 42';
console.log(esprima.tokenize(program))
jspmがサポートしていないNode.jsモジュールを使用するパッケージでは、エラーを投げます。
Uncaught Error: Node.js fs module is not supported by jspm core.
Deno support here is tracking in
https://github.com/jspm/jspm-core/issues/4, +1's are appreciated!
今のところ、パッケージは
Buffer
を使うパッケージが使えますが、そのためには
std/node
.
// import so polyfilled Buffer is exposed
import "https://deno.land/std/node/module.ts";
import BJSON from 'https://dev.jspm.io/buffer-json';
const str = BJSON.stringify({ buf: Buffer.from('hello') })
console.log(str);
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] ECMAScriptとは?
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする