npm replace:使用 npm 脚本替换多个文件中的文本
npm replace: issue with npm script to replace text in multiple file
我正在尝试替换多个文件夹中多个文件中的关键字。
我使用下面的正则表达式作为路径:./dist/src/**/**/**/*.scss
npm 脚本:"build:src:replace:icon": "replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r"
Note: This command is part of a npm-script
.
replace
is failing
only when used inside 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.
非常感谢任何帮助。
您 shell 可能正在解决导致奇怪行为的 glob 模式。尝试引用 glob:
npm run replace "./dist/src/**/**/**/*.scss"
将 package.json 的 scripts
部分中的脚本更改为以下内容:
"scripts": {
"build:src:replace:icon": "replace \"foo\" \"bar\" dist/src/ -r --include=\"*.scss\""
},
解释:
请注意 find/change 字符串,即 foo
和 bar
,都包含在 JSON 转义双引号 \"...\"
,而不是单引号 ('...'
),以获得更好的跨平台兼容性。
您的 glob 模式已从 ./dist/src/**/**/**/*.scss
更改为 dist/src/
。
- 为了避免使用多个不必要的双星,即
.../**/**/**
,我们没有指定,因为我们使用的是 -r
(递归)选项。
- 文件扩展名
/*.scss
也已从您的 glob 模式中省略
我们利用 --include
选项仅针对 .scss
文件,即 --include=\"*.scss\"
我正在尝试替换多个文件夹中多个文件中的关键字。
我使用下面的正则表达式作为路径:./dist/src/**/**/**/*.scss
npm 脚本:"build:src:replace:icon": "replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r"
Note: This command is part of a
npm-script
.replace
is failing only when used insidenpm-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.
非常感谢任何帮助。
您 shell 可能正在解决导致奇怪行为的 glob 模式。尝试引用 glob:
npm run replace "./dist/src/**/**/**/*.scss"
将 package.json 的 scripts
部分中的脚本更改为以下内容:
"scripts": {
"build:src:replace:icon": "replace \"foo\" \"bar\" dist/src/ -r --include=\"*.scss\""
},
解释:
请注意 find/change 字符串,即
foo
和bar
,都包含在 JSON 转义双引号\"...\"
,而不是单引号 ('...'
),以获得更好的跨平台兼容性。您的 glob 模式已从
./dist/src/**/**/**/*.scss
更改为dist/src/
。- 为了避免使用多个不必要的双星,即
.../**/**/**
,我们没有指定,因为我们使用的是-r
(递归)选项。 - 文件扩展名
/*.scss
也已从您的 glob 模式中省略
- 为了避免使用多个不必要的双星,即
我们利用
--include
选项仅针对.scss
文件,即--include=\"*.scss\"