【问题标题】:Grunt - plugin folder disapper after build distGrunt - 插件文件夹在构建 dist 后消失
【发布时间】:2014-11-04 14:13:04
【问题描述】:

我是 Yeoman、Grunt 和 Bower 的新手,当然在构建发行版时遇到了一些麻烦。

我使用 Yeoman 搭建了一个 webapp,构建了代码,添加了一个外部插件(不是通过 bower,没有该插件的包,所以我只是复制了插件文件夹并在我的 index.html 中添加了引用)

运行 grunt serve 时一切正常,我第一次构建发行版时使用

grunt

我收到了很多关于那个外部插件的 jshint 错误(缺少分号等......小东西),所以我只需要运行

grunt --force

构建我的 dist。

在 dist 文件夹中,外部插件文件夹和文件丢失,因此在构建过程中该文件夹被删除(但 index.html 文件包含对文件的所有引用)。

所以

grunt serve:dist

我的浏览器上有我的 dist,但没有插件。此时我将插件文件夹复制到 dist 文件夹的正确位置,重新加载页面,插件正在工作。然后杀死进程,我再次运行

grunt serve:dist

在这个命令之后,插件文件夹(我手动复制的)就消失了,所以我意识到复制和粘贴不是让事情正常工作的正确方法。

我如何告诉 grunt(或 bower)将该文件夹(在 js 文件夹内)保留在同一位置,而不是尝试压缩其中的文件,忽略使用 jshint 的 js 验证,而不是将其删除?

如果我想在根文件夹中添加一个新文件夹(例如 jsons)怎么办?什么时候构建一个发行版也会被删除?有什么地方我可以告诉 grunt 要包含/忽略哪个文件夹?

谢谢

---- 编辑----

这是我在 Gruntfile.js 中的“复制”任务

copy: {
  dist: {
    files: [{
      expand: true,
      dot: true,
      cwd: '<%= config.app %>',
      dest: '<%= config.dist %>',
      src: [
        '*.{ico,png,txt}',
        'images/{,*/}*.webp',
        '{,*/}*.html',
        'styles/fonts/{,*/}*.*'
      ]
    }, {
      src: 'node_modules/apache-server-configs/dist/.htaccess',
      dest: '<%= config.dist %>/.htaccess'
    }]
  },
  styles: {
    expand: true,
    dot: true,
    cwd: '<%= config.app %>/styles',
    dest: '.tmp/styles/',
    src: '{,*/}*.css'
  }
}

【问题讨论】:

  • dist 文件夹会在您每次运行 grunt serve:dist(或 grunt dist)时从头开始重建。我建议您阅读gruntjs.com/getting-started ...(并避免与--force 咕哝,如果不是暂时...)
  • 是的,我经历过...但是我怎样才能将该文件夹包含在构建的 dist 中?
  • 看看我的回答,作为一个例子(希望它对你有任何帮助......)

标签: javascript gruntjs yeoman bower


【解决方案1】:

这是“生产”Gruntfile.js 的摘录:

module.exports = function (grunt) {

  copy: {
    dist: {
      files: [{
        expand: true,
        dot: true,
        cwd: '<%= yeoman.app %>',
        dest: '<%= yeoman.dist %>',
        src: [
          //'*.{ico,png,txt}',
          '*.{txt}',
          '.htaccess',
          '*.html',
          '*.appcache',
          'views/{,*/}*.html',
          'images/{,*/}*.{webp}',
          'icons/**/*.{ico,png}',
          'scripts/i18n/{,*/}*.js',
          'i18n/{,*/}*.json',
        ]
      }, {
        expand: true,
        cwd: '.tmp/images',
        dest: '<%= yeoman.dist %>/images',
        src: ['generated/*']
      }, {
        expand: true,
        cwd: 'bower_components/bootstrap/dist',
        src: 'fonts/*',
        dest: '<%= yeoman.dist %>'
      }, {
        expand: true,
        cwd: 'bower_components/open-sans-fontface',
        src: 'fonts/**/*',
        dest: '<%= yeoman.dist %>/styles'
      }, {
        expand: true,
        cwd: 'bower_components/font-awesome',
        src: 'fonts/*',
        dest: '<%= yeoman.dist %>'
      }]
    },
  },

  ...

  grunt.registerTask('build', [
    'clean:dist',
    ...
    'copy:dist',
    ...
  ]);

  grunt.registerTask('default', [
    'build',
  ]);

};

请,阅读http://gruntjs.com/getting-started(这是一个五分钟的任务...:-)。

【讨论】:

  • 是的,您对文档的看法是正确的,我只是找不到合适的位置来查看。为什么要删除文件夹?我假设您的示例中的第一个是将 app 文件夹复制到 dist 文件夹中,有一个 expand: true,所以我假设它复制了该文件夹中的所有内容(并执行缩小等操作...),我必须在 src 中手动添加文件夹:?谢谢你的帮助! PS:我用与您的 Gruntfile.js 相同的摘录更新了我的答案
猜你喜欢
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 2021-09-24
  • 2019-02-28
  • 1970-01-01
相关资源
最近更新 更多