Gulp 如何在ASP.NETMVC应用程序中使用SaSS?

xmd2e60i  于 2023-04-03  发布在  Gulp
关注(0)|答案(4)|浏览(232)

问题与疑问

我一直在使用CSS代码时遇到问题,所以现在我总是使用SaSS代码。但我的问题是:如何将SaSS用于ASP.NET MVC应用程序?

我试过了
我尝试过使用Gulp任务来完成这个任务。

npm init
npm install --save gulp
npm install --save gulp-sass

下面是我的package.json文件:

{
  "name": "markeonline",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Hein Pauwelyn",
  "license": "ISC",
  "dependencies": {
    "gulp": "^3.9.1",
    "gulp-sass": "^3.1.0"
  }
}

这是gulpfile.js

var gulp = require("gulp"),
    sass = require("gulp-sass");

// other content removed

gulp.task("sass", function () {
    return gulp.src('./**/*.scss')
      .pipe(sass())
      .pipe(gulp.dest(project.webroot + './MarkeOnline.Website/Content/css'));
});

以下是我的项目结构:

如果我使用下面的命令,这段代码会给出以下错误:

gulp sass

**ReferenceError:**项目未定义

[17:50:58] ReferenceError: project is not defined
    at Gulp.<anonymous> (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\gulpfile.js:9:23)
    at module.exports (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\lib\runTask.js:34:7)
    at Gulp.Orchestrator._runTask (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:273:3)
    at Gulp.Orchestrator._runStep (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:214:10)
    at Gulp.Orchestrator.start (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:134:8)
    at C:\Users\hein_\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:129:20
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
    at Module.runMain (module.js:592:11)
    at run (bootstrap_node.js:394:7)

events.js:160
      throw er; // Unhandled 'error' event
      ^
Error: node_modules\node-sass\test\fixtures\depth-first\_vars.scss
Error: Undefined variable: "$import-counter".
        on line 1 of node_modules/node-sass/test/fixtures/depth-first/_vars.scss
>> $import_counter: $import_counter + 1;
   -----------------^

    at options.error (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\node-sass\lib\index.js:291:26)
0yg35tkg

0yg35tkg1#

尝试Web Compiler插件,这是我用来在MVC中编译SCSS的插件。
一个Visual Studio扩展,可以编译LESS,Sass,JSX,ES6和CoffeeScript文件。

ivqmmu1c

ivqmmu1c2#

我想你可以用另一种更简单的方法。

步骤1

在您的NuGet管理器中执行此步骤。
1.添加Microsoft.AspNet.Web.Optimization
1.相加BundleTransformer.SassAndScss
1.如果使用64位系统,请添加LibSassHost.Native.win-x64

  1. LibSassHost.Native.win-x86

第二步

BundleConfig.cs中添加RegisterBundles方法中的代码。

var nullBulider = new NullBuilder();
var nullOrderer = new NullOrderer();

BundleResolver.Current = new CustomBundleResolver();
var commonStyleBundle = new CustomStyleBundle("~/Bundle/sass");

commonStyleBundle.Include("~/css/main.scss");
commonStyleBundle.Orderer = nullOrderer;
bundles.Add(commonStyleBundle);

步骤3

在你的项目中添加CSS文件夹,并在里面添加main.scss文件表。

第四步

在你看来,你需要使用System.Web.Optimization

@using System.Web.Optimization

并链接样式表

@Styles.Render("~/Bundle/sass").

第五步

Global.asax中,我们需要在Application_Start()中添加这一行。

RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);

或者,如果你使用MVC模板,你可能会发现它已经在你的类中了。
这就是你的main.scss它的工作。

rbl8hiat

rbl8hiat3#

下面是如何将Sass添加到您的Mvc应用程序:

  • 下载WebCompiler:https://marketplace.visualstudio.com/items?itemName=MadsKristensen.WebCompiler&ssr=false#qna
  • 双击Vsix文件进行安装。
  • 右键单击解决方案,管理Nuget软件包
  • 下载bootstrap.sass包(版本4或以上)
  • 右键单击您需要的Content文件夹下的bootstrap.scss文件,然后选择Web编译器-编译文件
  • 将生成bootstrap.css文件。
  • 您可以选择任何要编译的scss文件。
  • 您可以在根文件夹的compilerconfig.json文件中看到配置(要编译的文件列表)。
  • 将css文件添加到bundle。
bundles.Add(new StyleBundle("~/Content/css").Include(
          "~/Content/bootstrap/main.css",
          "~/Content/site.css"));

如果您需要自定义bootstrap,请在bootstrap. scss所在的文件夹中添加一个main.scss文件,然后使用Web编译器对其进行编译。
main.scss:

/* import the necessary Bootstrap files */
@import "_functions.scss";
@import "_variables.scss";

/* make changes to the !default Bootstrap variables */
$body-color: green;

/* finally, import Bootstrap to set the changes! */
@import "bootstrap.scss";

这个例子包括了所有的文件,但是要确保你只添加了使css变小所需要的文件。

368yc8dk

368yc8dk4#

您可以将此解决方案用于net5.0、net6.0、netcoreapp3.1、netstandard2.0
这个例子展示了如何将来自不同来源的scss文件编译成一个单一的前端css文件。

你会用什么

使用说明

当创建一个新的ASP .NETCoreMVC项目时,这就是你将在前端看到的。

这是Bootstrap的5.1.0默认主题,位于~\wwwroot\lib\bootstrap\dist\css\bootstrap.css。我们将使用“Sass Compiler Library for .NET Core 3.1/5.x./6.x without node”更改此默认主题。

A.下载Bootstrap(示例使用5.2.3版本)

1.使用libman.json下载缺少的Bootstrap文件
1.右键单击项目。

  1. Add,然后Client-Side Library...,然后在Library:中搜索您想要的Bootstrap版本,然后Install

  • 默认安装应:
  • 将所有Bootstrap文件安装在lib文件夹下。
  • 我们对scss文件夹中的内容感兴趣。

B.安装AspNetCore.SassCompiler

1.使用Nuget软件包管理器选项卡:
1.右键单击项目并选择Manage NuGet Packages...
1.浏览所需的软件包并安装它。
1.使用Nuget包管理器或.NET CLI:

# Package Manager
PM> Install-Package AspNetCore.SassCompiler

# .NET CLI
dotnet add package AspNetCore.SassCompiler

C.下载Bootswatch文件

  • 从他们的网站,选择一个主题(我们将选择黑暗):

  • 将Darkly的Scss文件下载到你的项目中,在顶层,在一个新创建的名为Styles的文件夹中:

在这里下载两个Scss文件:

  • 注意 *:注意Bootswacth和Bootstrap必须匹配相同的版本。如果它们不匹配,请转到Bootswatch's repository并浏览它们的分支和提交以获取您需要的内容。

D.使用AspNetCore.SassCompiler编译 ALL Scss文件

您将添加和修改以下文件:

  • ~/Styles/site.scss
  • ~/appsettings.json
/* site.scss */
// Ugly example, delete this line, and get back the normal color.
$white: #ff0000 !default;

// Variable overrides go ABOVE this line.
@import "_variables.scss";
@import "../wwwroot/lib/bootstrap/scss/bootstrap.scss";
@import "_bootswatch.scss";

这是AspNetCore.SassCompiler需要的配置

// ~/appsettings.json
{
  // ...
  "SassCompiler": {
    "SourceFolder": "Styles",
    "TargetFolder": "wwwroot\\css",
    "Arguments": "--style=compressed",
    "GenerateScopedCss": true,
    "ScopedCssFolders": [ "Views", "Pages", "Shared", "Components" ],
    "IncludePaths": [],

    // You can override specific options based on the build configuration
    "Configurations": {
      "Debug": { // These options apply only to Debug builds
        "Arguments": "--style=expanded"
      }
    }
  }
  // ...
}

结果

  • 从所有这些文件:
  • x1米20英寸1x
  • ../wwwroot/lib/bootstrap/scss/bootstrap.scss
  • _bootswatch.scss
  • 您将获得:
  • ~\wwwroot\css\site.css
  • 如代码片段中所述,更改默认变量。
  • 添加您自己的代码也是以同样的方式进行的。
  • 最后你会得到类似这样的东西:

还有

您可以为运行时添加监视器:

// startup.cs
public void ConfigureServices(IServiceCollection services) 
{
  
#if DEBUG
  services.AddSassCompiler();
#endif

}

或者:

// Program.cs
#if DEBUG
builder.Services.AddSassCompiler();
#endif

相关问题