2016-04-20 24 views
4

私はYeomanを勉強していて、とても素敵です:)しかし、今私は新しいマシン用のVHOSTをセットアップしたいと思っています。プロジェクト。NPM/Yeomanでsudoコマンドを実行する

通常、VHOSTを作成する方法は、/etc/apache2/sites-available/に* .confファイルを作成し、sudo a2ensite new-site、最後にsudo service apache2 reloadを実行します。

私はsudoコマンドを実行するのにgenerator.spawnCommand()(またはそれ以外のもの)をどうすれば使えますか?私は、ユーザーがコマンドを実行するためにパスワードを入力する必要があると仮定します。私はsudoののNPMパッケージを試してみたが、それだけでも、https://www.npmjs.com/package/sudo

+0

私の推測では、Yeomanは出力を呑んでいるので、パスワードプロンプトが表示されないのです。ここで説明するように/ etc/sudoersにあなたのアカウントを設定することができます。これにより、 "パスワードなし" sudoが有効になります:http://askubuntu.com/questions/470383/how-to-avoid-prompt-password-for-sudo –

+0

@ TudorIlisoiありがとう、しかし、私はこの発電機を使用する唯一の人ではないので、私はそれを使用する前に特に何かを行う必要がなかった場合、それを好むだろう。私は、インストールを完了するために実行するコマンドを正確に記述したメッセージを最後にユーザに残すことを検討しています。 – powerbuoy

+0

さて、 'spawnCommand'の代わりに' spawnCommandSync'を試してみて、いくつかのイベントハンドラを追加して結果を確認することができます。https://github.com/yeoman/generator/issues/545 –

答えて

0

たぶん私は誤解してきた何かに提供された例のコードで静かに失敗しますが、次の簡単なコードが私のためにうまく働いた

注:

var generators = require('yeoman-generator'); 
var execSync = require('child_process').execSync; 

module.exports = generators.Base.extend({ 
    touch: function() { 
    execSync('sudo touch /tmp/test-sudo', { 
     stdio: 'inherit' 
    }); 
    } 
}); 
+0

これを試してみると、私は同じことになります'generator.spawnCommand()': "powerbuoyはsudoersファイルにありません。この事件は報告されます。 Error:コマンドが失敗しました:sudo touch test"。これを "sudoersファイル"に追加することで解決できたとしても(それは何でも:P)、ジェネレータを実行する前にユーザーが特別な操作を行う必要がない場合は、私はそれを好むでしょう。 – powerbuoy

+0

@powerbuoyですが、 'sudo'を使うことは' sudoers'ファイルを使うことを意味します。ユーザーがデフォルトに満足しない限り、彼(または彼の管理者)はファイルを変更する必要があります。ユーザーがsudoを実行できない場合は、 '/ etc/sudoers'を編集する以外の方法はありません。 –

+0

私は 'sudo touch test.txt'を手動で実行するとパスワードが尋ねられ、ファイルが作成されます。ジェネレータから実行すると、上記のメッセージが表示され、何も起こりません。前者はファイルを編集しなくてもいいと思う。おそらくそれは実行できませんが、私はちょうど最後にメッセージを残して、実行するコマンドをユーザーに伝えます(私は実際にこれをやっています)。 – powerbuoy

関連する問題