mottox2 blog

Node.jsでファイルを直接実行した際にしか動かない処理を書く

tip

Node.jsで他のファイルから呼び出すためのファイルを書いた時に、その関数をいい感じに実行したいと思ったことはないだろうか?具体的にはテストから呼び出すほどでもない用途でnode index.jsを叩いた時だけ動く動作を実現したい。
私は昔からRubyを書いており以下のような記述で、ファイルを直接実行した際にしか動かない処理を書くことができるのを知っていた。

sample.rb
class HogeClass
  def some_method
  end
end

# `ruby sample.rb`を叩くと実行される。他ファイルからの読み込み時には動作しない。
if $0 == __FILE__
  # do someting 
end

これをNode.jsに置き換えると次のようなコードで実現できた。便利だ。

index.js
modules.exports = () => {
}

if (require.main === module) {
  console.log('`node index.js`のように実行の起点となる時だけ実行される。')
  console.log('`require("./index")`のように読み込まれると実行されない。')
}

参考: https://nodejs.org/api/modules.html#modules_accessing_the_main_module

B!
event

技術書典7で『Slack App開発レシピ』を頒布します

技術書典7で『Slack App開発レシピ』という技術同人誌を頒布します。(サークルページ) この本は、技術書同人誌博覧会で頒布した『Slack App開発ガイド』の続編になります。 開発ガイド

event

フロントエンドNightで『JSXでつくるDSL』というLTをしてきた

gifteeさんのオフィスで開催された『フロントエンド Night #1』というイベントでLT枠を頂き『JSXでつくるDSL』というLTをしてきました。 > 話したこと話したこと JSXから

lt
dev

Node.jsでコマンドを実行したい時に使える『execa』の紹介

Node.jsでCLIのコマンドを実行する際、標準モジュールとして用意されている「child_process」を使う。ただ、調べてみたところNext.jsやGatsby.jsといったフレームワークの内

nodejs