在 npm 运行-script 中使用 node-sass watch 选项

Using node-sass watch option with npm run-script

所以我 运行 在 npm 包脚本中执行任务,但我想在 npm start 中传递监视选项。

这个有效:

"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 或 shorthand 都无法工作。

我假设问题是 运行-脚本在引号中传递了额外的参数,所以命令如下:

node-sass src/style.scss dist/style.css "-w"

我希望它在不添加任何依赖项的情况下工作。我错过了什么?

顺便说一句,我在 Windows 10 中使用命令 prompt/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 的目录。 我有一个 non-watching 版本 "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 的 custom script arguments 通过不在 watch 脚本中重复 build 脚本参数来保持 DRY:

"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 脚本的工作方式如下:

  1. 运行 build:sass 脚本。这将编译你的 CSS.
  2. 运行 build:sass 脚本,但这次包括 -w 标志。当您的 SASS 文件之一更改时,这将编译您的 CSS。

请注意在 watch:sass 脚本末尾使用的 -- 选项。这用于在执行脚本时传递自定义参数。来自 docs:

As of npm@2.0.0, you can use custom arguments when executing scripts. The special option -- is used by getopt to delimit the end of the options. npm will pass all the arguments after the -- directly to your script.

我认为最简单的方法是,对于较小的快速项目,只需打开一个新的 bash window 并粘贴:

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
}

package.json:

"scripts": {
"compile:sass": "node-sass ./styles.scss ./styles.css -w}

npm run compile:sass

请注意,如果您 运行 此命令,样式不会立即更新到 css 文件中, 只有当它检测到 sass 文件中的更改时,它才会更新您的 css 文件,而不是初始 运行.