npm替换:使用npm脚本替换多个文件中的文本

问题描述 投票:0回答:2

我正在尝试替换多个文件夹中多个文件中的关键字。我在路径下面使用正则表达式:./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! [email protected] build:src:replace:icon: `replace 'foo' 'bar' ./dist/src/**/**/**/*.scss -r`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build:src:replace:icon script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

非常感谢您的帮助。

javascript node.js npm npm-scripts
2个回答
0
投票

您的shell可能正在解决导致奇怪行为的glob模式。尝试引用glob:

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

0
投票

package.jsonscripts部分中的脚本更改为以下内容:

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

说明:

  1. 请注意find / change字符串,即foobar已用JSON转义的双引号\"...\"而不是单引号('...')包裹,以便更好地交叉平台兼容性。

  2. 您的球形样式已从./dist/src/**/**/**/*.scss更改为dist/src/**

    • 而不是使用多个不必要的双星,即.../**/**/**,我们只使用一对.../**
    • 文件扩展名/*.scss已从您的全局格式省略
  3. 我们利用--include选项仅定位.scss文件,即--include=\"*.scss\"

© www.soinside.com 2019 - 2024. All rights reserved.