R-AM

npm-scriptsで.sh

npm script を試す (サンプル付き忘備録) - Qiitaを見て「どんなもんかやってみよ」と試してみたけど、エラーが出て走ってくれない。

ディレクトリ構成
├─bin
|  └─build-sass.sh
├─node_modules
├─package.json
└─test
    ├─css
    └─scss
        └─style.scss
package.json
{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "sass": "bin/build-sass.sh"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "node-sass": "^4.5.2"
  }
}
build-sass.sh
#!/bin/bash
node-sass ./test/scss/$1.scss ./test/css/$1.css
実行したいコマンド
$ npm run sass -- style
エラー内容
'bin' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

shに実行権限が渡ってないのかな?と思って$ ls -l bin/build-sass.shで実行権限を確認してみたけど、ちゃんとx付いてた。

解決策

how to set shell for npm run-scripts in windows - Stack Overflowの回答を見るとbashが付いていたので、真似してbashを付けてみたら動きました。

package.json
"sass": "bash bin/build-sass.sh"