【问题标题】:How do I generate multiple semantic.<theme>.min.css files when building semantic ui?构建语义ui时如何生成多个semantic.<theme>.min.css文件?
【发布时间】:2019-10-11 13:28:27
【问题描述】:

我正在使用Semantic UI React,并尝试生成多个主题 css 文件以允许主题切换(主要在深色和亮色模式之间)。我找到了this 的答案,我也在尝试这样做,但似乎无法成功。

我希望gulp 为每个包含的主题吐出一个semantic.theme-name.min.css,但虽然它确实生成了css,但我似乎根本无法让gulp 吐出不同的文件或文件夹——最后一个主题在我下面的数组中总是覆盖semantic.min.css 文件(在我的情况下是“亚马逊”主题),我根本没有得到任何semantic.theme-name.min.css 文件。

谁能发现我做错了什么?

这是我尝试过的,它确实为 colorModes 数组中的最后一个主题生成正确编译的 css:

    /*******************************
              Build Task
    *******************************/

    let
      // dependencies
      gulp         = require('gulp-help')(require('gulp')),
      runSequence  = require('run-sequence'),
      print        = require('gulp-print').default,
      // config
      config       = require('./config/user'),
      install      = require('./config/project/install'),

      // task sequence
      tasks        = []
    ;


    // sub-tasks
    if (config.rtl) {
      require('./collections/rtl')(gulp);
    }
    require('./collections/build')(gulp);

    const colorModes = ['dark', 'amazon'];

    module.exports = function (callback) {

      tasks.push('build-javascript');
      tasks.push('build-assets');

      for (let i = 0; i < colorModes.length; i += 1) {
        console.info('Building Semantic');
        const colorMode = colorModes[i];

        gulp.task(`copy theme ${colorMode}`, function() {
          return gulp.src(`./src/themes/${colorMode}/theme.config`)
          .pipe(gulp.dest('./src/'));
        });

        gulp.task(`build css ${colorMode}`, ['build-css'])

        gulp.task(`copy output ${colorMode}`, [`build css ${colorMode}`], function() {
          return gulp.src(`./dist/**/*.css`)
          .pipe(gulp.dest(`../${colorMode}/dist`));
        });

        if (!install.isSetup()) {
          console.error('Cannot find semantic.json. Run "gulp install" to set-up Semantic');
          return 1;
        }
        tasks.push(`copy theme ${colorMode}`);
        tasks.push(`copy output ${colorMode}`);
      }

      console.log('running tasks', tasks);
      runSequence(...tasks, callback);
    };

编辑 - 在下面添加我的 semantic.json: {

  "base": "semantic/",
  "paths": {
    "source": {
      "config": "src/theme.config",
      "definitions": "src/definitions/",
      "site": "src/site/",
      "themes": "src/themes/"
    },
    "output": {
      "packaged": "../public/styles/",
      "uncompressed": "../public/styles/components/",
      "compressed": "../public/styles/components/",
      "themes": "../public/styles/themes/"
    },
    "clean": "dist/"
  },
  "permission": false,
  "autoInstall": false,
  "rtl": "both",
  "components": ["reset", "site", "button", "container", "divider", "flag", "header", "icon", "image", "input", "label", "list", "loader", "placeholder", "rail", "reveal", "segment", "step", "breadcrumb", "form", "grid", "menu", "message", "table", "ad", "card", "comment", "feed", "item", "statistic", "accordion", "checkbox", "dimmer", "dropdown", "embed", "modal", "nag", "popup", "progress", "rating", "search", "shape", "sidebar", "sticky", "tab", "transition", "api", "form", "state", "visibility"],
  "version": "2.4.2"
}

【问题讨论】:

    标签: css reactjs gulp themes semantic-ui


    【解决方案1】:

    更新:我设法找到了问题!上一次尝试查看了一个不存在的 dist 文件夹。我修改了脚本,首先将所有内容复制到临时 css 目录中,然后重命名必要的文件,最后将其复制到我的公共目录中。如果有人有更简洁的解决方案,请告诉我,否则现在可​​行:)

    我的项目/语义/任务/build.js:

    /*******************************
              Build Task
    *******************************/
    
    let
      // dependencies
      gulp         = require('gulp-help')(require('gulp')),
      runSequence  = require('run-sequence'),
      print        = require('gulp-print').default,
      rename       = require('gulp-rename'),
      // config
      config       = require('./config/user'),
      install      = require('./config/project/install'),
    
      // task sequence
      tasks        = []
    ;
    
    // sub-tasks
    if (config.rtl) {
      require('./collections/rtl')(gulp);
    }
    require('./collections/build')(gulp);
    
    const colorModes = ['dark', 'default'];
    
    module.exports = function (callback) {
    
      tasks.push('build-javascript');
      tasks.push('build-assets');
    
      for (let i = 0; i < colorModes.length; i += 1) {
        console.info('Building Semantic');
        const colorMode = colorModes[i];
    
        gulp.task(`copy theme ${colorMode}`, () => gulp
          .src(`./src/themes/${colorMode}/theme.config`)
          .pipe(gulp.dest('./src/')));
    
        gulp.task(`build css ${colorMode}`, ['build-css']);
    
    
        gulp.task(`rename css ${colorMode}`, () => gulp
          .src('./css/styles/semantic.min.css')
          .pipe(rename(`semantic.${colorMode}.min.css`))
          .pipe(gulp.dest('./css/styles')));
    
        gulp.task(`copy output ${colorMode}`, [`build css ${colorMode}`], () => gulp
          .src('./css/styles/*.css')
          .pipe(gulp.dest('../public/styles')));
    
        if (!install.isSetup()) {
          console.error('Cannot find semantic.json. Run "gulp install" to set-up Semantic');
          return 1;
        }
    
        tasks.push(`copy theme ${colorMode}`);
        tasks.push(`rename css ${colorMode}`);
        tasks.push(`copy output ${colorMode}`);
      }
    
      console.log('running tasks', tasks);
      runSequence(...tasks, callback);
    };
    

    我的项目/semantic.json:

    {
      "base": "semantic/",
      "paths": {
        "source": {
          "config": "src/theme.config",
          "definitions": "src/definitions/",
          "site": "src/site/",
          "themes": "src/themes/"
        },
        "output": {
          "packaged": "./css/styles/",
          "uncompressed": "./css/styles/components/",
          "compressed": "./css/styles/components/",
          "themes": "../public/styles/themes/"
        },
        "clean": "dist/"
      },
      "permission": false,
      "autoInstall": false,
      "rtl": "both",
      "components": ["reset", "site", "button", "container", "divider", "flag", "header", "icon", "image", "input", "label", "list", "loader", "placeholder", "rail", "reveal", "segment", "step", "breadcrumb", "form", "grid", "menu", "message", "table", "ad", "card", "comment", "feed", "item", "statistic", "accordion", "checkbox", "dimmer", "dropdown", "embed", "modal", "nag", "popup", "progress", "rating", "search", "shape", "sidebar", "sticky", "tab", "transition", "api", "form", "state", "visibility"],
      "version": "2.4.2"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 2022-01-15
      相关资源
      最近更新 更多