对npm运行脚本使用node-sass监视选项

h79rfbju  于 2023-01-30  发布在  Node.js
关注(0)|答案(7)|浏览(131)

所以我在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或速记,则无法工作。
我假设问题是run-script在引号中传递了额外的参数,所以命令如下所示:

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

我希望不添加任何依赖项就能正常工作。我错过了什么?
顺便说一句,我在Windows 10中使用命令提示符/git bash。

noj0wjuj

noj0wjuj1#

这是我的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"
ie3xauqp

ie3xauqp2#

在前面答案的基础上,另一种选择是利用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。
1.再次运行build:sass脚本,但这次包含-w标志。当SASS文件更改时,这将编译CSS。
请注意watch:sass脚本末尾使用的--选项,该选项用于在执行脚本时传递自定义参数。
从npm@2.0.0开始,您可以在执行脚本时使用自定义参数。getopt使用特殊选项--来分隔选项的结尾。npm会将--后面的所有参数直接传递给您的脚本。

vfhzx4xs

vfhzx4xs3#

顺便说一句,这是找我的钱:

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

修改:脚本运行时是异步的,对于初始编译,再加上watch标志.

pvabu6sv

pvabu6sv4#

package.json:

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

npm run compile:sass
注意如果你运行这个命令样式不会立即更新到css文件中,只有当它检测到sass文件中的变化它才更新你的css文件,而不是在初始运行时.

u5rb5r59

u5rb5r595#

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

node-sass src/ -wo dist
thigvfpy

thigvfpy6#

如果希望在.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
}
x4shl7ld

x4shl7ld7#

我遇到了一些问题,因为node-sassis deprecated(另外,依赖于node-gyp、python、vs构建工具等)
我用了这个软件包. json

"scripts": {
    "css": "sass styles/scss/styles.scss:styles/css/styles.css",
    "css:watch": "sass --watch styles/scss/styles.scss:styles/css/styles.css"
  },
  "devDependencies": {
    "sass": "^1.57.1"
  },

请记住更改源文件夹和目标文件夹。

相关问题