2014-12-15 6 views
1

Я пытаюсь получить Grunt, чтобы заменить ссылку на путь, и я не уверен, что я делаю неправильно. Похоже, он должен работать. По сути, я копирую файл Bootstrap в каталог и меняю пути @import, поэтому я просто пытаюсь заменить «bootstrap /» новым маршрутом назначения «MY/NEW/DEST/PATH/bootstrap». Я не хочу использовать модуль для чего-то такого же прямого, как это, кажется ненужным. Все работает, кроме замены.Использование Grunt для замены текста в файле

var destFilePath = path.join(basePath, file); 

// Does the file already exist? 
if (!grunt.file.exists(destFilePath)) { 

    // Copy Bootstrap source @import file to destination 
    grunt.file.copy(

     // Node API join to keep this cross-platform 
     path.join(basePath, 'bootstrap/_bootstrap.scss'), 
     destFilePath 
    ); 

    // Require node filesystem module, since not a global 
    var fs = require('fs'); 

    // Replace @import paths to be relative to new destination         
    fs.readFile(destFilePath, 'utf8', function(err, data) { 

     // Check for any errs during read 
     if (err) { 
      return grunt.log.write(err); 
     } 

     var result = data.replace('/bootstrap\//g', 'bootstrap/bootstrap/'); 

     fs.writeFile(destFilePath, result, 'utf8', function(err) { 
      return grunt.log.write(err); 
     }); 
    }); 
} 
+0

то, что он на самом деле делает против того, что вы ожидаете, что делать? –

+0

не заменяет 'bootstrap /' пути @import на 'my/path /', ничего не заменяет. – mtpultz

ответ

1

Вы обернуты ваш регулярное выражение в кавычках - не делать этого и он должен работать нормально:

var result = data.replace(/bootstrap\//g, 'bootstrap/bootstrap/'); 
+0

btw ... вы можете использовать grunt.file.read и grunt.file.write вместо использования 'fs' ... и ваш файл grunt.file.copy не нужен, так как вы быстро перезаписываете файл –

+0

Хммм, он все еще не работает Кажется, что работает, строка @import по-прежнему: «bootstrap/variables»; а не «bootstrap/bootstrap/variables»; но используя ваше предложение выше и не используя fs, попробуйте сначала с тем же кодом. Спасибо за помощь – mtpultz

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