管道无法按预期运行 npm 脚本

Piping not working as expected npm scripts

我试图通过将转译的 css 作为第一个参数传递给 cssnano 来使用 cssnano 压缩我的 sass 文件。它不起作用,因为它只创建一个空白文件。第一个脚本正确运行并创建压缩的 css 文件。这是我的 package.json

{
  "name": "cssnano",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "build:css": "cssnano < main.css > main.min.css",
    "build:css1": "node-sass main.scss > main.css | cssnano > main.min.css"
  },
  "dependencies": {
    "cssmin": "^0.4.3",
    "cssnano-cli": "^1.0.5",
    "node-sass": "^3.13.0"
  }
}

如果你真的需要 main.css 和 main.min.css 你可以试试这个(因为写入文件显然不会同时将内容添加到管道):

node-sass main.scss > main.css && cat main.css | cssnano > main.min.css

否则使用这个:

node-sass main.scss | cssnano > main.min.css

你可以使用 Unix tee command, or the node equivalent, https://github.com/stefanmaric/ntee

node-sass main.scss | tee main.css | cssnano main.min.css

如果您的脚本只需要在 Unix 上运行,请使用 tee。如果它必须在 windows 上工作,您将需要使用 ntee.