20200414のNode.jsに関する記事は6件です。

Alfred4 + emoj|Alfred4で簡単に絵文字が入力できるらしい!

Alfred4で簡単に絵文字が入力できるらしい!

しかも無駄にディープラーニングやってるとか

やったこと

  • Alfred4インストール、PowerPack登録
  • Node.jsのインストール
  • npm -g install xxxに失敗するので、npmのデフォルトディレクトリを作成する
  • alfred-emojのインストール
  • Alfred Preferences > Workflows > Emoj > Copy to Clipboard > [x]Automatically paste to front most app

これはおもしろい!?

参考リンク

Alfred3 おすすめワークフロー 7選 + 1
https://qiita.com/ryo2132/items/ef392999d32732fa0455

alfred-emoj
https://github.com/sindresorhus/alfred-emoj?ref=producthunt

Node.js®
https://nodejs.org/en/

【備忘録】npm -g install に失敗する
https://qiita.com/NaokiIshimura/items/cc07441939b226e779c6

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Alfred4 + emoj|Alfred4で簡単に絵文字が入力できるらしい!→alfred-emojiに変更

Alfred4で簡単に絵文字が入力できるらしい!

しかも無駄にディープラーニングやってるとか(alfred-emoj)

 ↓

違うワークフロー(alfred-emoji)に変更
こっちのほうが新しい、インストール簡単、使い方もわかりやすい

やったこと

  • Alfred4インストール、PowerPack登録
  • Node.jsのインストール
  • npm -g install xxxに失敗するので、npmのデフォルトディレクトリを作成する
  • alfred-emojのインストール
  • Alfred Preferences > Workflows > Emoj > Copy to Clipboard > [x]Automatically paste to front most app

これはおもしろい!?

 ↓

- aflred-emojiのインストールに変更

参考リンク

Alfred3 おすすめワークフロー 7選 + 1
https://qiita.com/ryo2132/items/ef392999d32732fa0455

alfred-emoj
https://github.com/sindresorhus/alfred-emoj?ref=producthunt

Node.js®
https://nodejs.org/en/

【備忘録】npm -g install に失敗する
https://qiita.com/NaokiIshimura/items/cc07441939b226e779c6

 ↓

【Mac向け】よく使うAlfred Workflowを晒してみます【絵文字入力、FontAwesomeアイコン検索、エンコード/デコード、数値の基数変換】
https://blog.ttskch.com/mac-alfred-workflow-introducing/

alfred-emoji
https://github.com/jsumners/alfred-emoji

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

vue-good-tableをTypeScriptで使おうとして TS7016: Could not find a declaration file for module 'vue-good-table'.

使用バージョン

$ npm list vue typescript vue-good-table
app@1.0.0
├── typescript@3.8.3
├── vue@2.6.11
└── vue-good-table@2.19.1

問題

Vue.jsをTypeScriptで使っていて、以下ドキュメントどおりに進めたところ、コンパイルエラー発生。

https://xaksis.github.io/vue-good-table/guide/#installation

エラー内容

TS7016: Could not find a declaration file for module 'vue-good-table'. 
'[app]/node_modules/vue-good-table/dist/vue-good-table.cjs.js'
implicitly has an 'any' type.

解決

[app]/@types/以下にファイル作成。

vue-good-table.d.ts
declare module 'vue-good-table'

TypeScriptまだ良く分からないですが、moduleを宣言すれば良いらしい。
@types/に関しては、d.tsファイルをそこに置くとコンパイル時に読み込んでくれるよう。

※ tsconfig.json の typeRoots のデフォルト設定が @types ディレクトリになっています。
https://qiita.com/Nossa/items/726cc3e67527e896ed1e

VueGoodTableはanyだけど、とりあえずコンパイルはできました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Yarnでローカルのパッケージをaddする方法

この投稿ではyarnコマンドで、ローカルのパッケージをインストールする方法を紹介します。

通常yarn addはnpmjs.comで公開されたパッケージをダウンロードしてきてインストールしますが、ここで説明するのはローカルにのみ存在する自作のライブラリをaddする方法です。

(npmで同様のことをする方法は、「npmでローカルのパッケージをinstallする方法」をご覧ください)

やりかた

ローカルのパッケージをインストールには、単純にインストールしたいパッケージのファイルパスをyarn addの引数にします:

yarn add インストールしたいパッケージのパス

node_modulesにインストールされるパッケージをシンボリックリンクにしたい場合:

yarn add link:インストールしたいパッケージのパス

ローカルパッケージをインストールする具体例

少し具体例をもとに説明します。

以下の図のように、myappパッケージとmylibパッケージがあり、myappからmylibを使いたい例を見てみましょう。

mylibindex.jsでは、helloWorld変数が提供されていて、myappmain.jsでそれを使いたいとします。

このとき、myappパッケージにてyarn add ../mylibを実行するとこれが実現します:

$ yarn add ../mylib

yarn add v1.22.4
info No lockfile found.
[1/4] ?  Resolving packages...
[2/4] ?  Fetching packages...
[3/4] ?  Linking dependencies...
[4/4] ?  Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ mylib@1.0.0
info All dependencies
└─ mylib@1.0.0
✨  Done in 0.08s.

インストールされると、package.jsonmylibへの依存設定が追加されます:

package.json
{
  "name": "myapp",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "mylib": "../mylib"
  }
}

main.jsを実行してみます:

$ node main.js
Hello World!

しっかりとmylibの変数が使われているが分かります。

ちなみに、インストールされたmyapp/node_modules/mylibmylibをごっそりコピーしたものになります。../../mylibへのシンボリックリンクではないので注意です。

シンボリックリンクにしたい場合はファイルパスの頭にlink:を付けます:

yarn add link:../mylib

最後までお読みくださりありがとうございました。Twitterでは、Qiitaに書かない技術ネタなどもツイートしているので、よかったらフォローお願いします:relieved:Twitter@suin

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

npmでローカルのパッケージをinstallする方法

この投稿ではnpmコマンドで、ローカルのパッケージをインストールする方法を紹介します。

通常npm intallはnpmjs.comで公開されたパッケージをダウンロードしてきてインストールしますが、ここで説明するのはローカルにのみ存在する自作のライブラリをinstallする方法です。

(yarnで同様のことをする方法は、「Yarnでローカルのパッケージをaddする方法」をご覧ください)

やりかた

ローカルのパッケージをインストールには、単純にインストールしたいパッケージのファイルパスをnpm intallの引数にします:

npm install インストールしたいパッケージのパス

ローカルパッケージをインストールする具体例

少し具体例をもとに説明します。

以下の図のように、myappパッケージとmylibパッケージがあり、myappからmylibを使いたい例を見てみましょう。

mylibindex.jsでは、helloWorld変数が提供されていて、myappmain.jsでそれを使いたいとします。

このとき、myappパッケージにてnpm install ../mylibを実行するとこれが実現します:

$ npm install ../mylib

+ mylib@1.0.0
added 1 package and audited 1 package in 0.74s
found 0 vulnerabilities

インストールされると、package.jsonmylibへの依存設定が追加されます:

package.json
{
  "name": "myapp",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "mylib": "file:../mylib"
  }
}

main.jsを実行してみます:

$ node main.js
Hello World!

しっかりとmylibの変数が使われているが分かります。

ちなみに、インストールされたmyapp/node_modules/mylib../../mylibへのシンボリックリンクになります:

$ ls -la myapp/node_modules
lrwxr-xr-x 11 suin 14 Apr  9:35 mylib -> ../../mylib
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

discord.js + Klasa を使ったBotの作成覚え書き

参考 : discord.jsのフレームワークKlasaが強すぎる
合わせて読んでください。

準備

  • 環境
    • Win10
    • Node.js 12.13.0
    • npm 6.12.0

適当にプロジェクトフォルダを作成し discord.js と Klasa をインストール

npm install --save discordjs/discord.js dirigeants/klasa

コーディング

最初の一歩

app.js を作成

app.js
const secret = require('./secret.js'); // BOTトークンはここに記述
const token = secret.token;

const {Client} = require('klasa');

new Client({
  prefix: '!!', // ボットのPrefix
  language: 'ja-JP', // 言語コード
}).login(token);

この状態で一度 node app.js から起動し、危険なログが出てなければとりあず成功。

コマンドの作成

commands/general 配下に以下のソースを作成。Klasaはファイル名がそのままコマンド名になる。
ディレクトリ名はヘルプのカテゴリ名になる。
なお、下のソースに書かれている usage は単なる説明文ではなく引数のマッチャを参照するための記述なので注意。(これで30分ぐらい潰した……)

commands/general/hello.js
const {Command} = require('klasa');

module.exports = class extends Command {
  /**
   * @constructor
   * @param  {...any} args
   */
  constructor(...args) {
    // コマンドのオプション: https://klasa.js.org/#/docs/klasa/master/typedef/CommandOptions
    super(...args, {
      description: '挨拶を返す',
      usage: '<name:string>', // <>は必須引数、[]はオプション引数、<名前:型>のように書く
    });
  }

  /**
   * @param {*} message
   */
  async run(message,[name]) {
    return message.sendMessage(`${name}さんこんにちは!`);
  }
};

参考 :
Klasa : CreatingArguments
Klasa : CreatingCommands

BOTの反応はこんなかんじ

コメント 2020-04-14 002903.png

コメント 2020-04-14 002903_.png

データストアの作成

providers ディレクトリにプロバイダを作成する。公式を見るとなんか適当に書いてよさそうだったので適当に書いてみる。

providers/datas.js
const {Provider} = require('klasa');

module.exports = class extends Provider {
  /**
   * @constructor
   * @param  {...any} args
   */
  constructor(...args) {
    super(...args, {name: 'datas'});
    this.counter = 0;
  }

  /**
   * init
   */
  init() {
    this.counter=1;
  }

  /**
   * countup
   * @return {Number} count
   */
  countup() {
    this.counter++;
    return this.counter;
  }
};

hello.jsから動作確認してみる。

const {Command} = require('klasa');

module.exports = class extends Command {
  /**
   * @constructor
   * @param  {...any} args
   */
  constructor(...args) {
    // コマンドのオプション: https://klasa.js.org/#/docs/klasa/master/typedef/CommandOptions
    super(...args, {
      description: '挨拶を返す',
      usage: '<name:string>',
    });
    this.data = this.client.providers.get('datas');
  }

  /**
   * @param {*} message
   */
  async run(message, [name]) {
    return message.sendMessage(`${name}さんこんにちは!${this.data.countup()}回めの挨拶ですね!`);
  }
};

コメント 2020-04-14 005829.png

本当に適当に動いてしまった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む