2015-12-05 4 views
0

Я хотел бы сгенерировать свои devDependencies на основе необходимости. Для этого у меня есть массив в моем генераторе и некоторые операции, как это:включая devdependencies в package.json

var FiddleGenerator = generator.Base.extend({ 
    init: function() { 
    this.devDependencies = []; 
    }, 
    //...excluded for brevity 
    gruntConfigure: function() { 
    this.devDepedencies = [ 
     'grunt', 
     'grunt-contrib-watch', 
     'grunt-contrib-connect' 
    ];   
    }, 
    installStuff: { 
    if(this.option('skip-install')) return; 
    this.npmInstall(this.devDependencies, { saveDev: true }); 
    } 
}); 

Проблема здесь, когда пользователь выбирает, чтобы пропустить установку НПМ, а затем делает это вручную (т.е. npm install) ничто не установлена.

Однако, я не могу просто написать package.json файл вроде этого ... какие версии я поставить против каждого пакета, чтобы иметь их выглядеть следующим образом:

"devDependencies": {   
    "grunt": "~0.4.2",   
    "grunt-contrib-watch": "~0.5.3", 
    "grunt-contrib-connect": "^0.7.0" 
    } 

ответ

0

Просто напишите devDependencies в файл package.json вручную внутри JS-кода (this.fs.writeJSON). Нет необходимости использовать для этого npmInstall().

Вы можете увидеть это здесь делается: https://github.com/yeoman/generator-node/blob/master/generators/gulp/index.js#L38-L69

+0

Но версии не приходят к каждому пакету я использую. В моем коде 'npmInstall' позаботится об этом. Код, который вы указали, расширяет существующие packages.json и перезаписывает его. Он не показывает, как зависимости добавляются динамически с помощью кода ... – deostroll

+0

Обновлен пример с зависимостями добавления подгенераторов. Во всяком случае, основной момент остается, просто добавьте их в package.json, а не используя 'npmInstall'. Вам не нужны автоматические ошибки, потому что ваш генератор будет генерировать сломанный код через месяц или два; и это очень плохой пользовательский интерфейс. –

Смежные вопросы