【问题标题】:npm replace: issue with npm script to replace text in multiple filenpm replace:用 npm 脚本替换多个文件中的文本的问题
【发布时间】:2019-11-08 19:22:57
【问题描述】:

我正在尝试替换多个文件夹中多个文件中的关键字。 我正在使用下面的正则表达式作为路径:./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.

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript node.js npm npm-scripts


    【解决方案1】:

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

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

    说明:

    1. 请注意 find/change 字符串,即 foobar,都被包裹在 JSON 转义双引号 \"...\" 中,而不是单引号 ('...' ),以获得更好的跨平台兼容性。

    2. 您的 glob 模式已从 ./dist/src/**/**/**/*.scss 更改为 dist/src/

      • 除了使用多个不必要的双星,即.../**/**/**,我们不指定任何双星,因为我们使用的是-r(递归)选项。
      • 文件扩展名 /*.scss 也已从您的 glob 模式中省略
    3. 我们利用--include 选项仅定位.scss 文件,即--include=\"*.scss\"

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 它是 npm 脚本的一部分。试过了;还是一样的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 2018-02-07
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2023-01-27
      相关资源
      最近更新 更多