Как заменить значения переменных sass с помощью grunt-sass-replace? - PullRequest
1 голос
/ 19 мая 2019

Я хочу заменить несколько значений переменной sass внутри файла конфигурации sass. Например, я хочу заменить значение переменной "$ file_global" = "new";

Я хочу использовать для выполнения работы пакет "grunt-sass-replace", я много пробовал, но он выдает мне различные ошибки.

Структура каталогов моего проекта:

grep/
     /node_modules/
     package.json
     Gruntfile.js
     src/
         my-styles.scss

my-styles.scss Код:

$file_global: "old";

Gruntfile.js Код:

module.exports = function(grunt){
pkg: grunt.file.readJSON('package.json'),
grunt.initConfig({ 

'sass-replace': {

                  files: { // File Options
                            src: 'src/my-styles.scss',
                            dest: 'dest/my-styles.scss'
                  },
                  options: {
                    variables: [
                      {
                        name: 'file_global',
                        to: 'new'
                      }
                    ]
                  }
}

});

grunt.loadNpmTasks('grunt-sass-replace');
grunt.registerTask('default', ['sass-replace']);
};

package.json Код:

{
  "name": "grep",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "KJ",
  "license": "ISC",
  "devDependencies": {
    "grunt": "^1.0.4",
    "grunt-sass-replace": "^0.1.18",
    "npm-check-updates": "^3.1.9"
  }
}

Я обновил "files" , но он все еще дает мне различные ошибки. Ниже приведены варианты, которые я пробовал, и сгенерированные ошибки.

Первая попытка

// Option First : 
                  files: {
                           'dest/my-styles.scss': 'src/my-styles.scss'
                  },

                  ERROR : 
                          C:\wamp64\www\GREP>grunt
                          >> Tasks directory "C:\wamp64\www\GREP\node_modules\grunt-sass-replace\node_modules\grunt-string-replace\tasks" not found.
                          Running "sass-replace:files" (sass-replace) task
                          Warning: no files passed. Use --force to continue..
                          Aborted due to warnings.

Вторая попытка:

// Option Second : 
files: [
        {
           src: 'src/my-styles.scss',
           dest: 'dest/my-styles.scss'
        }

],

ERROR : 
        C:\wamp64\www\GREP>grunt
        >> Tasks directory "C:\wamp64\www\GREP\node_modules\grunt-sass-replace\node_modules\grunt-string-replace\tasks" not found.
        Running "sass-replace:files" (sass-replace) task
        Warning: pattern.indexOf is not a function Use --force to continue.
        Aborted due to warnings.

Последняя попытка:

// Option Third : 
files: {
           src: 'src/my-styles.scss',
           dest: 'dest/my-styles.scss'
        },


ERROR : 
        C:\wamp64\www\GREP>grunt
        >> Tasks directory "C:\wamp64\www\GREP\node_modules\grunt-sass-replace\node_modules\grunt-string-replace\tasks" not found.
        Running "sass-replace:files" (sass-replace) task
        >> [1] scss files found in [1] passed files.
        >> replacements resolved successfully.
        running string-replace task.
        Warning: Task "string-replace:sass" not found. Use --force to continue.
        Aborted due to warnings.

Кто-нибудь знает, как решить эту ошибку, или любой другой пакет grunt, который может выполнить эту работу.

1 Ответ

1 голос
/ 19 мая 2019

Этот пакет был последний раз обновлен 3 года назад, также он использует grunt ~ 0.4.5.Я не могу помочь вам с этим, однако извлечение "grunt-sass-replace-values" от https://www.npmjs.com/package/grunt-sass-replace-values. Этот пакет обновлен год назад и исправлен.

npm install grunt-sass-replace-values ​​--save-dev

Проверьте следующую проблему на Github: https://github.com/eliranmal/grunt-sass-replace/issues/1


Объяснение:


Причина ошибок:

  • Вы неправильно определили переменную sass.Переменные должны быть определены как "$ variable: value;" , а не как "$ variable = value;"

  • По состоянию на Githubпроблема с этим пакетом, вам нужно обновить путь к вашей "grunt-string-replace" зависимости.


Решение:

В корневой папке вашего проекта перейдите в каталог ниже:

node_modules/grunt-sass-replace/tasks

Когда вы окажетесь в указанном выше каталоге, найдите имя файла "sass-replace.js"

Просто откройте файл в любом текстовом редакторе и отредактируйте путь к зависимости.

grunt.task.loadTasks(path.resolve(__dirname, '../node_modules/grunt-string-replace/tasks'));

В вашем случае измените это, как показано ниже:

grunt.task.loadTasks(path.resolve(__dirname, '../../../node_modules/grunt-string-replace/tasks'));

Надеюсь, это решит вашу проблему.Если нет, используйте другой пакет или используйте более старые версии node и grunt (0.4.5).

...