配置多个命令在 VS Code 任务中并行运行(编译和自动添加 Sass 前缀)

2024-03-04

我之前一直使用 Koala 通过自动前缀和缩小(在 Windows 上)来编译我的 Sass,但发现 Koala 不再被维护。因此,我试图弄清楚人们通常如何编译 Sass、自动添加前缀并在保存时自动缩小它。

我对 Gulp 这样的命令行工具不是很有经验,但已经足够使用 NPM 来安装 Dart Sass、PostCSS 等,而且由于我使用 VS Code,我认为它的内部任务功能似乎喜欢最简单的方法。

目前,如果我在 VS Code 终端中执行此操作:

sass --watch sass:. --style compressed

它有效,也就是说,它成功地监视了sass目录并输出一个缩小的.css父目录中的文件。

如果我停止这样做并改为这样做:

postcss style-raw.css --output style.css --use autoprefixer --watch

它也有效。我不得不重命名原来的.scss文件因为显然postcss不允许--replace and --watch同时。

所以现在,我有style-raw.scss编译为style-raw.css当我运行sass命令,以及style-raw.css获取自动前缀并输出到style.css当我运行postcss命令。

我陷入困境的是通过任务同时运行两个命令。在我的tasks.json我有的文件:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Sass Compile",
            "type": "shell",
            "command": "sass --watch sass:. --style compressed | postcss style-raw.css --output style.css --use autoprefixer --watch",
            "problemMatcher": [
                "$node-sass"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

这与构建任务相关,该任务的键盘快捷键为ctrl+shift+B,所以到目前为止我的最终目标是能够击中ctrl+shift+B开始监视、编译和自动添加前缀等一切。

但目前,当我使用键盘快捷键时,只有 Sass 命令运行。我在某处发现另一篇文章说管道应该适用于多个命令,但它似乎并不适用,或者也许你不能--watch两件事同时发生,我不知道。我尝试了一个数组command:但这要么不起作用,要么我没有正确的格式。

或者也许有一种完全不同且更好的方法来完成这一切,但如果有人可以帮助同时使用这两个命令,我们将不胜感激。

更新:解决方案 ---------------------------------------------------------- ---------

在下面@soulshined的帮助下,我让多个命令正常工作(dependsOn选项就是窍门),但显然它不会运行两个命令--watch同一终端中的参数。对于我的用例来说,这是行不通的,我最终发现这篇非常有帮助的文章 https://dev.to/pzelnip/visual-studio-code-tasks-and-split-terminals-2ghk这解释了如何通过对多个任务进行分组来在拆分终端中运行多个任务。

如果其他人在相同的用例中遇到此问题,这里是工作tasks.json file:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile CSS",
            "dependsOn": [
                "Sass Compile",
                "Prefix Output",
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
        },
        {
            "label": "Prefix Output",
            "type": "shell",
            "command": "postcss style-raw.css --output style.css --use autoprefixer --watch",
            "presentation": {
                "group": "cssCompile"
            }
        },
        {
            "label": "Sass Compile",
            "type": "shell",
            "command": "sass --watch sass:. --style compressed",
            "problemMatcher": [
                "$node-sass"
            ],
            "presentation": {
                "group": "cssCompile"
            }
        }
    ]
}

更新 2:咕噜咕噜 ---------------------------------------------------------- ----------

随机浏览了我自己的帖子,我想补充一点,我现在使用 Gulp。我不记得为什么,但是 VS Code 任务后来变得很麻烦,而且 Gulp 原来并不难学。


我陷入困境的是通过任务同时运行两个命令

Running concurrently can be tricky to accomplish; consider taking advantage of the dependsOn property. Here is a brief example of running commands tasks consecutively:

"version": "2.0.0",
"tasks": [
    {
        "label": "Echo All",
        "type": "shell",
        "command": "echo Done",
        "dependsOn": [
            "Last"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    },
    {
        "label": "Last",
        "type": "shell",
        "command": "echo 'Did it last'",
        "dependsOn": "First",
    },
    {
        "label": "First",
        "type": "shell",
        "command": "echo 'Doing it first'",
    }
]

这是一个与语言 [shell] 无关的解决方案。如果您想运行多个命令,可以尝试在每个语句后添加分号:

"command": "sass --watch sass:. --style compressed; postcss style-raw.css --output style.css --use autoprefixer --watch"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置多个命令在 VS Code 任务中并行运行(编译和自动添加 Sass 前缀) 的相关文章

随机推荐

  • 在没有 GUI 的服务器上运行 Smalltalk?

    我有一个相当明显的问题 我想在生产服务器上运行 Smalltalk 而不使用图形界面 VW 或 Pharo 甚至 Squeak 可能实现这一点吗 我有一个没有 X 的 VPS 托管 并且希望在 Smalltalk 上运行一些网站 同时使用成
  • emberjs 如何禁用 Ember.Select?

    我有一个与这个问题类似的问题 Emberjs 禁用和启用 TextField https stackoverflow com questions 10523780 emberjs disable and enable textfield 所
  • 如何安全地为 Perl 5.8.9 编译 Perl 5.12 模块?

    我想在我的 Perl 5 8 9 中安装 File Fetch 它是 Perl 5 12 中的核心模块 一般来说 我想在回溯的 Perl 中编译和安装未来的模块 因为我无法升级我的 Perl 所以我下载了该模块及其依赖项 遵循依赖关系树是相
  • 在 django 中建立一对多关系

    我正在尝试在 django 中建立一对多关系 在我的模型中 我有一个 Person 类和一个 Group 类 我想要建立的关系是一个 Group 内部可以有 N 个人 并且一个 Group 不能在没有至少一个人的情况下存在 在 MER 图中
  • 将 Cython 中的 numpy 数组传递给需要动态分配数组的 C 函数

    我有一些具有以下声明的 C 代码 int myfunc int m int n const double a double b double c So a是一个常量二维数组 b是一个二维数组 并且c是一个一维数组 全部动态分配 b and
  • 抛出 VS 重新抛出:结果相同吗?

    参考网上的很多文档 特别是关于SO的文档 例如 在 C 中重新引发异常的正确方法是什么 https stackoverflow com questions 178456 what is the proper way to re throw
  • 使用剃刀时关闭WebFormViewEngine?

    我下载了Glimpse http www getglimpse com 今天早上尝试一下 当我单击 视图 选项卡时注意到这一点 它检查所有加载的视图引擎 我发现在哪里RazorViewEngine在 web config 中指定 但我找不到
  • 如何在收到 fetch POST 请求的响应后将用户重定向到页面?

    我正在为一个 Web 应用程序编写代码 该应用程序使用 javascript 的 fetch api 向 node js 服务器发送 POST 请求 成功请求后 服务器会进行重定向响应 该重定向 URL 将在 fetch api 响应正文中
  • 谷歌智能锁与凭证管理 API

    我想为我的网络应用程序实现无摩擦登录过程 经过一番搜索 我发现有两种解决方案 谷歌智能锁 https developers google com identity one tap web get started 凭证管理API https
  • 如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

    如何将 bin 文件写入软盘 虚拟软盘 软盘映像的第一个扇区 我正在尝试启动一个简单的 512 字节引导加载程序 到处都显示 512 字节 的大小 所以我应该已经很好了 附加信息 引导加载程序仅显示一个字符串 我正在学习simple集会 有
  • 使用 UnityContainer 中的接口注册类型

    我正在使用 UnityContainer 并且我想注册一个接口 而不是使用类型 而是使用另一个接口 不幸的是 我无法干净地做到这一点 我有几个常用的接口 它们统一在一个接口中 我需要将它们注册到容器中 代码如下 interface IDev
  • iPhone清除CGContext

    我用这段代码创建了一个带有漂亮阴影的圆圈 我在 iPhone 上使用 MonoTouch net Objective C 答案当然很好 UIGraphics PushContext ctx SizeF shadowSize new Size
  • 过滤罗盘读数

    我正在使用罗盘标题来旋转 MKMapView 旋转有点不稳定 所以我试图像 iPhone 上的 Google 地图一样过滤它 或者似乎做了一些欺骗 我正在尝试使用移动平均公式过滤 iPhone 指南针的读数 但它在 359 和 0 之间的交
  • Android 服务被杀死

    我有一个服务与我的应用程序在同一进程中运行 有时 Android 操作系统决定终止我的服务 可能是由于内存不足 我的问题是 我的应用程序是否会与服务一起被杀死 或者它到底是如何工作的 Thanks 首先请务必阅读 http develope
  • 使用声明和 AntiforgeryToken 的 MVC 5 OWIN 登录。我是否错过了 ClaimsIdentity 提供商?

    我正在尝试学习 MVC 5 OWIN 登录的声明 我尝试让它尽可能简单 我从 MVC 模板开始并插入我的声明代码 见下文 当我在视图中使用 Html AntiForgeryToken 帮助程序时 出现错误 Error A claim of
  • 格式化 xml 字符串的好代码

    有人有一个现成的函数可以接受 XML 字符串并返回正确缩进的字符串吗 eg
  • 在模拟器中运行的 React Native 给出捆绑失败:权限被拒绝错误

    我刚刚创建了一个项目react native init在 Manjaro Linux 上并使用 Android Studio 打开它 然后我跑了react native start在终端上运行该应用程序 然后在现有的模拟器上运行该应用程序
  • C++ std::set 比较器

    这是代码 struct comp bool operator Reputation one Reputation two if one gt Amount lt 0 two gt Amount gt 0 return false if on
  • JMeter - 根据平均响应时间测试失败

    我正在使用性能插件在 Jenkins 中运行 JMeter 作业 如果平均响应时间 这是我尝试添加 BeanSehll Listener 和 Assertion 的方法 Recording Controller Home Page Bean
  • 配置多个命令在 VS Code 任务中并行运行(编译和自动添加 Sass 前缀)

    我之前一直使用 Koala 通过自动前缀和缩小 在 Windows 上 来编译我的 Sass 但发现 Koala 不再被维护 因此 我试图弄清楚人们通常如何编译 Sass 自动添加前缀并在保存时自动缩小它 我对 Gulp 这样的命令行工具不