在Gruntfile.js中使用grunt-browserify

6

我在使用grunt-browserify时遇到了一些问题,无法找到如何使用它的解释。在他们的示例文件夹中,我查看了基本示例下的browserify节点,并看到以下内容:

module.exports = function (grunt) {
  grunt.initConfig({
    browserify: {
      vendor: {
        src: [],
        dest: 'public/vendor.js',
        options: {
          require: ['jquery'],
          alias: [
            './lib/moments.js:momentWrapper', //can alias file names
            'events:evt' //can alias modules
          ]
        }
      },
      client: {
        src: ['client/**/*.js'],
        dest: 'public/app.js',
        options: {
          external: ['jquery', 'momentWrapper'],
        }
      }
    },
    concat: {
      'public/main.js': ['public/vendor.js', 'public/app.js']
    }
  });
  grunt.loadTasks('../../tasks');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.registerTask('default', ['browserify', 'concat']);
};

“Vendor”和“client”是什么,它们在哪里有文档说明?在README文件中,它们提到了“preBundleCB”,“dist”,我看到了很多其他选项,大多数都有自己的数据结构。这些选项是否被枚举并解释过?

1个回答

12
根据Grunt配置约定,“vendor”和“client”是targets。它们的名称不由grunt或grunt-browserify定义。您可以创建任意数量的目标,并给它们喜欢的名称。每个目标都有files配置,这在大多数Grunt任务中是常见的,例如srcdest,以及options配置,这是插件特定的。“dist”是targets的另一个示例,“preBundleCB”是grunt-browserify选项的属性。
您可以使用grunt browserify:vendorgrunt browserify:client单独调用目标。而grunt browserify会调用此示例中所有browserify任务的目标,其中包括“vendor”和“client”。
每个grunt-browserify目标都会创建一个打包的脚本文件。在此示例中,“vendor”目标创建包含jquery,名为momentWrappermoment.js以及名为evteventsvendor.js。“client”目标创建app.js,其中包含client/**/*.js及其依赖项,但不包括jquerymomentWrapper

非常有帮助,谢谢!我想在这个日志中补充一件事情,就是在grunt.initConfig中执行browserify节点的文件可以在node_modules.grunt-browserify.tasks.browserify中找到。我是Grunt的新手,之前并不理解这种关系。 - Shane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接