javascript - grunt服务删除index.html中对openlayers.js的引用

标签 javascript gruntjs code-injection yo

我已经使用 yoeman 和 webapp 生成器启动了一个项目。

我已经安装了开放层包并将以下行添加到我的index.html

除了复制一些 kml 文件的引用之外,gruntfile 自从 yeoman 生成以来没有改变 关于在哪里寻找此问题的解决方案的任何建议。 //于 2014-12-09 使用生成 //生成器-webapp 0.5.1 '使用严格';

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// If you want to recursively match all subfolders, use:
// 'test/spec/**/*.js'

module.exports = function (grunt) {

// Time how long tasks take. Can help when optimizing build times
require('time-grunt')(grunt);

// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);

// Configurable paths
var config = {
app: 'app',
dist: 'dist'
};

// Define the configuration for all the tasks
grunt.initConfig({

// Project settings
config: config,

// Watches files for changes and runs tasks based on the changed files
watch: {
  bower: {
    files: ['bower.json'],
    tasks: ['wiredep']
  },
  js: {
    files: ['<%= config.app %>/scripts/{,*/}*.js'],
    tasks: ['jshint'],
    options: {
      livereload: true
    }
  },
  jstest: {
    files: ['test/spec/{,*/}*.js'],
    tasks: ['test:watch']
  },
  gruntfile: {
    files: ['Gruntfile.js']
  },   styles: {
    files: ['<%= config.app %>/styles/{,*/}*.css'],
    tasks: ['newer:copy:styles', 'autoprefixer']
  },
  livereload: {
    options: {
      livereload: '<%= connect.options.livereload %>'
    },
    files: [
      '<%= config.app %>/{,*/}*.html',
      '.tmp/styles/{,*/}*.css',
      '<%= config.app %>/images/{,*/}*'
    ]
  }
},

// The actual grunt server settings
connect: {
  options: {
    port: 9000,
    open: true,
    livereload: 35729,
    // Change this to '0.0.0.0' to access the server from outside
    hostname: 'localhost'
  },
  livereload: {
    options: {
      middleware: function(connect) {
        return [
          connect.static('.tmp'),
          connect().use('/bower_components', connect.static('./bower_components')),
          connect.static(config.app)
        ];
      }
    }
  },
  test: {
    options: {
      open: false,
      port: 9001,
      middleware: function(connect) {
        return [
          connect.static('.tmp'),
          connect.static('test'),
          connect().use('/bower_components', connect.static('./bower_components')),
          connect.static(config.app)
        ];
      }
    }
      },
    dist: {
    options: {
      base: '<%= config.dist %>',
      livereload: false
    }
  }
},

// Empties folders to start fresh
clean: {
  dist: {
    files: [{
      dot: true,
      src: [
        '.tmp',
        '<%= config.dist %>/*',
        '!<%= config.dist %>/.git*'
      ]
    }]
  },
  server: '.tmp'
},

// Make sure code styles are up to par and there are no obvious mistakes
jshint: {
  options: {
    jshintrc: '.jshintrc',
    reporter: require('jshint-stylish')
  },
  all: [
    'Gruntfile.js',
    '<%= config.app %>/scripts/{,*/}*.js',
    '!<%= config.app %>/scripts/vendor/*',
    'test/spec/{,*/}*.js'
  ]
},

// Mocha testing framework configuration options
mocha: {
  all: {
    options: {
      run: true,
      urls: ['http://<%= connect.test.options.hostname %>:<%= connect.test.options.port %>/index.html']
    }
  }
},
  // Add vendor prefixed styles
autoprefixer: {
  options: {
    browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']
  },
  dist: {
    files: [{
      expand: true,
      cwd: '.tmp/styles/',
      src: '{,*/}*.css',
      dest: '.tmp/styles/'
    }]
  }
},

// Automatically inject Bower components into the HTML file
wiredep: {
  app: {
    ignorePath: /^\/|\.\.\//,
    src: ['<%= config.app %>/index.html'],
    exclude: ['bower_components/bootstrap/dist/js/bootstrap.js']
  }
},

// Renames files for browser caching purposes
rev: {
  dist: {
    files: {
      src: [
        '<%= config.dist %>/scripts/{,*/}*.js',
        '<%= config.dist %>/styles/{,*/}*.css',
        '<%= config.dist %>/images/{,*/}*.*',
        '<%= config.dist %>/styles/fonts/{,*/}*.*',
        '<%= config.dist %>/*.{ico,png}'
      ]
    }
  }
},

// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
  options: {
    dest: '<%= config.dist %>'
  },
  html: '<%= config.app %>/index.html'
},

// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
  options: {
    assetsDirs: [
      '<%= config.dist %>',
      '<%= config.dist %>/images',
      '<%= config.dist %>/styles'
    ]
  },
  html: ['<%= config.dist %>/{,*/}*.html'],
  css: ['<%= config.dist %>/styles/{,*/}*.css']
},

// The following *-min tasks produce minified files in the dist folder
imagemin: {
  dist: {
    files: [{
      expand: true,
      cwd: '<%= config.app %>/images',
      src: '{,*/}*.{gif,jpeg,jpg,png}',
      dest: '<%= config.dist %>/images'
    }]
  }
},

svgmin: {
  dist: {
    files: [{
      expand: true,
      cwd: '<%= config.app %>/images',
      src: '{,*/}*.svg',
      dest: '<%= config.dist %>/images'
    }]
  }
},
  htmlmin: {
  dist: {
    options: {
      collapseBooleanAttributes: true,
      collapseWhitespace: true,
      conservativeCollapse: true,
      removeAttributeQuotes: true,
      removeCommentsFromCDATA: true,
      removeEmptyAttributes: true,
      removeOptionalTags: true,
      removeRedundantAttributes: true,
      useShortDoctype: true
    },
    files: [{
      expand: true,
      cwd: '<%= config.dist %>',
      src: '{,*/}*.html',
      dest: '<%= config.dist %>'
    }]
  }
   },

// By default, your `index.html`'s <!-- Usemin block --> will take care
// of minification. These next options are pre-configured if you do not
// wish to use the Usemin blocks.
// cssmin: {
//   dist: {
//     files: {
//       '<%= config.dist %>/styles/main.css': [
//         '.tmp/styles/{,*/}*.css',
//         '<%= config.app %>/styles/{,*/}*.css'
//       ]
//     }
//   }
// },
// uglify: {
//   dist: {
//     files: {
//       '<%= config.dist %>/scripts/scripts.js': [
//         '<%= config.dist %>/scripts/scripts.js'
//       ]
//     }
//   }
// },
// concat: {
//   dist: {}
// },

// Copies remaining files to places other tasks can use
copy: {
  dist: {
    files: [{
      expand: true,
      dot: true,
      cwd: '<%= config.app %>',
      dest: '<%= config.dist %>',
      src: [
        '*.{ico,png,txt}',
        'images/{,*/}*.webp',
        '{,*/}*.html',
        'styles/fonts/{,*/}*.*',
        'kmlfiles/{,*/}*.kml'
      ]
    }, {
      src: 'node_modules/apache-server-configs/dist/.htaccess',
      dest: '<%= config.dist %>/.htaccess'
    }, {
      expand: true,
      dot: true,
      cwd: 'bower_components/bootstrap/dist',
      src: 'fonts/*',
       dest: '<%= config.dist %>'
    }]
  },
  styles: {
    expand: true,
    dot: true,
    cwd: '<%= config.app %>/styles',
    dest: '.tmp/styles/',
    src: '{,*/}*.css'
  }
},

// Run some tasks in parallel to speed up build process
concurrent: {
  server: [
    'copy:styles'
  ],
  test: [
    'copy:styles'
  ],
  dist: [
    'copy:styles',
    'imagemin',
    'svgmin'
  ]
}
});

最佳答案

由于您没有显示发生更改的 HTML 文件,我只能假设您将引用放在了 Bower/endbower 标记之间。您的 gruntwiredep 任务将用用 Bower 安装的模块替换这些标签之间的所有内容。

关于javascript - grunt服务删除index.html中对openlayers.js的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411360/

相关文章:

Javascript 打印 html 标签作为 innerHTML 输出到屏幕的一部分

yeoman - 将 Foundation 与 Yeoman 一起使用

javascript - 过滤包含零值的对象

javascript - 为不同的浏览器包含不同的类

javascript - 错误 "Object has no method ' endsWith'"在自定义 grunt 任务上

c# - 重构大型项目的 DI

java - 如何清理 Java 生成代码的用户输入?

php - Opencart:Ajax json响应未知字符

Javascript 跳过 if 和 if else 条件并直接跳转到 else 条件

javascript - 正在运行 "watch"任务正在等待...警告 : EMFILE, 打开文件过多 '../..'