2
私のワークフローは、単純なシェルコマンドとともにnode_modulesでコマンドを実行するnpmスクリプトです。Windows上のnpmスクリプトでバックティックを使用する方法
残念なことに、これは一部のコマンドでバッククイックを使用しているため、Windowsユーザーにとっては難しくなります(下記の例を参照)。私はshellJS/shxに私のビルドのためにボランティアを要求していますので、私のレポはクロスプラットフォームを構築しますが、npmスクリプトのバックティックの解決策を見つけることはできません。
質問:
- NPMどのシェルを使用していますか?ウィンドウでは、バッククォートをサポートしていないようです。
- 回避策はありますか?配管は助けにならない、悲しいかな、RM、mkdirなどは標準入力を使わない。 package.jsonで
例のバッククォートの使用:bin/pkgkey.js mkdirs
スクリプトは単にmkdirs配列を返し
"mkdirs": [
"dist/AS",
"libs",
"models/scripts"
],
"scripts": {
"mkdirs": "mkdir -p `bin/pkgkey.js mkdirs`",
....
..。これは奇妙に思えるかもしれませんが、npmスタイルのワークフローを整理するのに最適です。
pkgkeyスクリプト(簡体字):それはあなたのユースケースのために働く場合
#!/usr/bin/env node
const fs = require('fs')
const json = JSON.parse(fs.readFileSync('package.json'))
const key = process.argv[2]
let val = json[key]
if (Array.isArray(val)) val = val.join(' ')
process.stdout.write(val)
ないWindowsユーザーが、あなたは引用符逃れることはできません: ' – Dominik
@Dominikザ・OPはバッククォートを述べ、/ pkgkey.js mkdirs \ " "ます。mkdir -p \" ビン"::' ' "mkdirsを" \ ''しかし、ええ。 – ifconfig
ええ、彼は彼らがすべてのシェルで動作する引用符に移動するように動作していないと言った...いいえ? – Dominik