LoginSignup
11
12

More than 5 years have passed since last update.

テストが通った時だけ`npm publish`する

Posted at

npm prepublishは、npm install時に実行してしまいます
この記事では、それを回避する方法と、TravisCIで利用する方法を紹介します。

方法は、.travis.ymlafter_successと、package.jsonscriptsをうまく連携させます。
まず、下記のnpm scriptsを書きます。

{
  "scripts": {
    "prepublish": "node -e \"if(process.env.TRAVIS_PASSED){}else{process.exit(1)}\" && npm run compile || echo skip prepublish"
  }
}

これは以下のように動作します。

npm run prepublish
# skip prepublish

TRAVIS_PASSED=true npm run prepublish
# > npm run compile

compileスクリプトには、publish用のコンパイルスクリプトを書いて下さい(たとえば:babel src --out-dir lib)。

srcで完結しているモジュールであれば、package.jsonmainlibに指定してやれば、gitでlibを管理せず済みます。

最後に、利用している.travis.ymlに、下記を追記します。(事前にnpm Releasing - Travis CIを設定する必要があります)

after_success:
  - export TRAVIS_PASSED=true

テストが通れば、npm publishの直前にだけ、npm run compile実行されます

11
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12