Node.js 将节点sass监视选项与npm运行脚本一起使用

Node.js 将节点sass监视选项与npm运行脚本一起使用,node.js,sass,npm,build-tools,node-sass,Node.js,Sass,Npm,Build Tools,Node Sass,因此,我在npm包脚本中运行任务,但我想通过npm start中的watch选项 这项工作: "scripts": { "scss": "node-sass src/style.scss dist/style.css -w" } 这不会编译、监视或抛出任何错误: "scripts": { "scss": "node-sass src/style.scss dist/style.css", "start": "parallelshell \"npm run scss -- -w\""

因此,我在npm包脚本中运行任务,但我想通过
npm start
中的watch选项

这项工作:

"scripts": {
  "scss": "node-sass src/style.scss dist/style.css -w"
}
这不会编译、监视或抛出任何错误:

"scripts": {
  "scss": "node-sass src/style.scss dist/style.css",
  "start": "parallelshell \"npm run scss -- -w\""
}
如果没有parallelshell或没有速记,则无法工作

我假设问题在于运行脚本在引号中传递额外的参数,因此该命令的结果如下:

node-sass src/style.scss dist/style.css "-w"
我希望它在不添加任何依赖项的情况下工作。我错过了什么


顺便说一句,我在Windows 10中使用命令提示符/git bash。

这是我的css构建设置

"scripts": {
  "css": "node-sass src/style.scss -o dist",
  "css:watch": "npm run css && node-sass src/style.scss -wo dist"
},
"devDependencies": {
  "node-sass": "^3.4.2"
}
o标志设置输出css的目录。 我有一个非监视版本“css”,因为监视版本“css:watch”~不会在运行时立即生成,它只在更改后运行,所以我调用

npm run css 
打电话之前

node-sass src/style.scss -wo dist
如果您只希望它在更改时运行,而不是在第一次运行时运行,只需使用

"css:watch": "node-sass src/style.scss -wo dist"
顺便说一句,这是找我的零钱:

"scss": "node-sass src/style.scss dist/style.css",
"start": "parallelshell \"npm run scss && npm run scss -- -w\"

编辑:更改为异步脚本运行,用于初始编译,然后使用监视标志。

在前面的答案的基础上,另一个选项是通过不重复
监视
脚本中的
构建
脚本参数来利用NPM保持干燥:

"scripts": {
  "build:sass": "node-sass -r --output-style compressed src/style.scss -o dist",
  "watch:sass": "npm run build:sass && npm run build:sass -- -w"
}
在上面的示例中,
watch:sass
脚本的工作方式如下:

  • 运行
    build:sass
    脚本。这将编译您的CSS
  • 再次运行
    build:sass
    脚本,但这次包括
    -w
    标志。这将在其中一个SASS文件更改时编译CSS
  • 请注意
    --
    脚本末尾使用的
    watch:sass
    选项。这用于在执行脚本时传递自定义参数。从:

    截至npm@2.0.0,您可以在执行脚本时使用自定义参数。特殊选项--getopt使用它来限定选项的结尾。npm将把--之后的所有参数直接传递给脚本


    在我看来,对于较小的quick项目,最简单的方法就是打开一个新的bash窗口并粘贴:

    node-sass src/ -wo dist
    

    如果要在
    .scss
    文件中保存更改时自动查看和编译更改,可以使用以下解决方案:

    "scripts": {
      "watch:sass": "node-sass -w path/to/your/scss --output-style compressed", 
      // example  :  node-sass -w public/styles/scss/bootstrap.scss public/styles/style.css --output-style compressed
    }
    

    如果您使用vcode,我更喜欢使用extention-watching-sass-live-server,这是一种非常有用的方法

    有没有办法避开它传递的双引号?正如我所说,这是有效的:
    node-sass-src/style.scss-dist/style.css-w
    这不是:
    node-sass-src/style.scss-dist/style.css“-w”
    谢谢你的提示。我现在就用它们。你可以用反斜杠避开双引号。比如:\“-w\”,这样双引号就不会使JSON无效,但是当您在终端运行命令时,它们会显示出来。我的意思是,npm运行scss--w不会通过
    节点sass src/style.css dist/style.scss“-w”
    。等等。。。没有关系。我是个白痴。我不知道为什么以前我认为改变没有任何作用。谢谢你的帮助。我不得不将第二行改为这行,以便观察者工作(parallelshell 2.0):
    “开始”:“parallelshell\”npm run scss\“\”npm run scss--w\”
    嗯,我还有2.0。如果同步运行任务,例如:
    npm运行scss&npm运行scss--w
    ,会怎么样。无论哪种方式对我都有效。对我来说不是这样的-watcher实际上并没有保持在“watch”模式,所以我坚持使用parallelshell文档。同时,我还创建了一个“prewatch”任务:
    “prewatch”:“npm运行scss”
    您能编辑并解释答案吗“这是找我的钱”很模糊。什么是平行壳?请考虑我的答案()在这一个!哥们,那是金色的,谢谢你。仅供参考,对于其他节点sass选项:Thread 1.0以后的警告,脚本不需要“-”来转发选项。在将来的版本中,任何显式“-”都将按原样转发到脚本。脚本应更新为“watch:sass”:“npm运行构建:sass&&npm运行构建:sass-w”