Gulp 在Gruntfile中使用变量对象

6ojccjat  于 2022-12-16  发布在  Gulp
关注(0)|答案(1)|浏览(150)

我试图通过在Gruntfile中使用一个带有一组指定参数的变量对象来避免重复代码。如果声明不正确,我道歉,因为我不完全确定如何在gruntjs中创建一个对象变量。目标是在sonarRunner配置中使用sonarProperties。在if块中,添加一些额外的行,并在else块中,我只使用sonarProperties。不幸的是我的语法不正确。这可能吗?我基于一个gulpfile并想做一些类似的事情。
示例gulpfile:

const packageName = require('./package.json').name;
gulp.task('sonar', callback => {
  let sonarProperties = {
    // #################################################
    // # General Configuration
    // #################################################
    'sonar.projectKey': `microservice:${packageName}`,

    'sonar.sourceEncoding': 'UTF-8',
    'sonar.login': process.env.SONAR_TOKEN,

    // #################################################
    // # Javascript Configuration
    // #################################################
    'sonar.language': 'javascript',
    'sonar.sources': 'src',
    'sonar.tests': 'test',
    'sonar.javascript.lcov.reportPaths': 'coverage/lcov.info',
    'sonar.coverage.exclusions': 'src/**/*.spec.js',
  };

  if (process.env.SONAR_ANALYSIS_TYPE === 'pr') {
    sonarProperties = {
      ...sonarProperties, // #################################################
      // # Github Configuration
      // #################################################
      'sonar.pullrequest.provider': 'github',
      'sonar.pullrequest.branch': process.env.branch,
      'sonar.pullrequest.key': process.env.pr_numbers,
      'sonar.pullrequest.base': process.env.base_branch,
      'sonar.pullrequest.github.repository': process.env.repo,
      'sonar.scm.revision': process.env.sha,
    };
  }

以下是我的牢骚档案的相关要点:

sonarProperties: [{
    projectKey: 'microservice:<%= pkg.name %>',
    projectName: 'Microservice - <%= pkg.name %>',

    sourceEncoding: 'UTF-8',
    login: 'admin',
    password: 'admin',

    host: {
      url: 'http://localhost:9000/'
    },

    language: 'js',
    sources: 'js',
    tests: 'test',
    testExecutionReportPaths: 'test_coverage_reporter/report.xml',
    javascript: {
      lcov: {
        reportPaths: 'test_coverage/lcov.info'
      }
    },
  }],

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    sonarRunner: {
      analysis: {
        options: {
          debug: true,
          separator: '\n',
          sonar: (function() {
            if (process.env.SONAR_ANALYSIS_TYPE === 'pr') {
              return {
                ...sonarProperties
                moreParams: someData,
              };
            } else {
              return {
                // use just sonarProperties
              };
            }
          }())

        }
      }
    }

  });
n3ipq98p

n3ipq98p1#

我可以使用以下代码创建函数:

grunt.registerTask('sonar', function () {
  let sonarProperties = {
      // #################################################
      // # General Configuration
      // #################################################
      .. 
}

并从一开始就将其声明为回调,作为一项繁重的任务。

相关问题