npm replace: проблема со скриптом npm для замены текста в нескольких файлах - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь заменить ключевые слова в нескольких файлах в нескольких папках. Я использую приведенное ниже регулярное выражение для пути: ./dist/src/**/**/**/*.scss

сценарий npm: "build:src:replace:icon": "replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r"

Примечание. Эта команда является частью npm-script. replace терпит неудачу только при использовании внутри npm-script.

Ошибка:

 replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r

Rendering Complete, saving .css file...
fs.js:941
  binding.lstat(pathModule._makeLong(path));
          ^

Error: ENOENT: no such file or directory, lstat 'C:\Users\XYZ\project\dist\src\**\**\**\*.scss'
    at Object.fs.lstatSync (fs.js:941:11)
    at replacizeFileSync (C:\Users\XYZ\project\node_modules\replace\replace.js:138:22)
    at module.exports (CC:\Users\XYZ\project\node_modules\replace\replace.js:79:17)
    at Object.<anonymous> (C:\Users\XYZ\project\node_modules\replace\bin\replace.js:42:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! project@2.3.0 build:src:replace:icon: `replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the project@2.3.0 build:src:replace:icon script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Измените свой сценарий в разделе scripts вашего package.json на следующее:

"scripts": {
  "build:src:replace:icon": "replace \"foo\" \"bar\" dist/src/ -r --include=\"*.scss\""
},

Объяснение:

  1. Обратите внимание, что обе строки find / change , т. Е. foo и bar, заключены в двойные кавычки JSON с экранированием \"...\" вместо одинарных кавычек ('...'), для лучшей кроссплатформенной совместимости.

  2. Ваш шаблон глобуса был изменен с ./dist/src/**/**/**/*.scss на dist/src/.

    • Вместо использования нескольких ненужных двойных звезд, т. Е. .../**/**/**, мыне указывайте ничего, потому что мы используем опцию -r (resursive).
    • Расширение файла /*.scss также было опущено в шаблоне глобуса
  3. Мы используем опцию --include, чтобы указывать только файлы .scss, то есть --include=\"*.scss\"

0 голосов
/ 07 ноября 2019

Ваша оболочка, вероятно, разрешает шаблон глобуса, приводящий к странному поведению. Попробуйте процитировать глобус:

npm run replace "./dist/src/**/**/**/*.scss"
...