2015-02-07 72 views
0

当使用grunt中的browserify将jsx文件转换为js文件时,是否有方法指定多个源 - >目标映射?转换多个JSX文件

我有以下Gruntfile.js支持单个文件转换,但我希望能够指定另一个文件的第二个映射。我知道我可以基于通配符映射到单个组合的目标文件。然而,这不是我想要的,因为我不想在我的各种页面上包含反应组件的“全部或全部”。某些组件仅适用于几页,不应随处包含。

browserify: { 
      options: { 
       transform: [ require('grunt-react').browserify ] 
      }, 
      //How do I map a second file here without a wild card? 
      client: { 
       src: ['react_components/src/component1.jsx'], 
       dest: 'react_components/build/component1.js' 
      } 
     } 

基本上我希望是一种能够提供相同的任务SRC-DEST映射的阵列,以创建多个目标文件:

client: [{ 
       src: ['react_components/src/component1.jsx'], 
       dest: 'react_components/build/component1.js' 
      }] 

喜欢的东西上面的JSON

+0

我不使用咕噜-browserify,但我假定任务的电流输出是一个捆绑的文件?如果你想输出另一个包,你需要一个单独的任务。如果您可以提供您想要的输出示例,可能会使问题更清晰。 – 2015-02-07 18:31:59

+0

是的输出是一个单一的包。您建议每个捆绑包单独执行任务是有意义的。我想我最初的目标是每个任务输出多个捆绑包,但可能不支持... – TGH 2015-02-07 18:37:43

+0

它可能受grunt browserify支持,但任何内容都将在后台运行多个browserify“捆绑包”。 Browserify是关于一个目的地。您可以使用[外部包](https://github.com/substack/browserify-handbook#external-bundles)通过多个包构建应用程序。 – 2015-02-07 18:42:36

回答

2

至于我,我不使用browserify,我使用grunt-react和react-tools。咕噜反应允许用户定义dynamic_mappings,基于正则表达式,像这样:

//Gruntfile.js 
grunt.initConfig({ 
    react: { 
     dynamic_mappings: { 
     files: [ 
      /* Controllers compiling. */ 
      { 
      expand: true, 
      cwd: './app/scripts/controllers/src', 
      src: ['**/*.jsx'], 
      dest: './app/scripts/controllers/dest', 
      ext: '.js' 
      }, 
      /* ui-components compiling */ 
      { 
      expand: true, 
      cwd: './app/scripts/ui-components/src', 
      src: ['**/**.jsx'], 
      dest: './app/scripts/ui-components/dest', 
      ext: '.js' 
      }, 
      /* JSX test compiling */ 
      { 
      expand: true, 
      cwd: './test/ui-components/src', 
      src: ['**/**.jsx'], 
      dest: './test/ui-components/dest', 
       ext: '.test.js' 
      } 
     ] 
     } 
    } 
}); 
+1

太好了。谢谢你的作品! – TGH 2015-02-07 22:48:00

+0

很高兴为您效劳。 – 2015-02-07 23:14:47