10634


現在、下記のような packackge.json を使用して、TravisCIで`npm
publish`を実行した時に、hookするようなスクリプトを使用しています。

[code]

    {
      "scripts": {
        "prepublish": "if [ $TRAVIS ]; then npm run compile; fi"
      }
    }
    
[/code]

上記は、bash環境下であれば動くのですが、例えば Windows から`npm
install`を実行したタイミングでもhookしてしまうので、`$TRAVIS was unexpected at this
time.`となり、インストールを行えません。

Windows環境下で、`npm publish`/`npm
install`のタイミングで、環境変数TRAVISを参照し、処理を分岐させることは可能でしょうか？


CC BY-SA 3.0
2015-05-26T05:39:52.940
10629
2015-07-25T12:53:21.790
9834
question
node.js
npm scriptsでif文を使用したい

[code]

    {
      "scripts": {
        "prepublish": "node -e \"if(process.env.TRAVIS){}else{process.exit(1)}\" && echo true || echo false"
      }
    }
    
[/code]

上記であれば、Win/Mac両方とも動作しました。

~~（自己回答になります）Evaluate scriptを使い、 **Travisであれば後方ステートメントを実行する**
ことで、ifを実現できました。これはwin/mac両方で動作します。~~

[code]

    {
      "scripts": {
        "prepublish": "node -e \"if(!process.env.TRAVIS)process.exit(1)\" && npm run compile"
      }
    }
    
[/code]

~~上記は、bash系の`"`内で`!`が評価されるため動作せず、逆に`"`を`'`に変えると、bat系で動作しません。~~

[code]

    $ node ifTravis.js && npm run compile
    
[/code]

~~という風に、素直に別ファイル内で同様の処理を書いて、実行した方がよさそうです。~~


CC BY-SA 3.0
2015-05-26T06:35:13.690
10634
2015-05-26T11:39:40.317
2015-05-26T11:39:40.317
9834
9834
10629
answer