首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加多个输入/输出目录

添加多个输入/输出目录
EN

Stack Overflow用户
提问于 2016-10-13 09:30:16
回答 2查看 712关注 0票数 0

我正在使用grunt-babel将我的react-jsx文件转换为.js

我正计划为此写一份繁重的任务。目前,我有以下内容

代码语言:javascript
复制
module.exports = function( grunt ) {
    require('load-grunt-tasks')(grunt);
    grunt.initConfig( {

        babel : {
            options : {
                plugins : ['transform-react-jsx'],
                presets: ['es2015', 'react']
            },
            client : {
                expand : true,
                cwd : './react_demo/test/jsx/common',
                src : ['*.jsx'],
                dest : './react_demo/static/react/components',
                ext : '.js'
            }
        }
    } );

    grunt.loadNpmTasks('grunt-babel');
    grunt.registerTask('default', ['babel:client']);

};

在我的上述任务中,我要做的是将./react_demo/test/jsx/common文件夹中的所有./react_demo/test/jsx/common文件转换为./react_demo/static/react/components

现在,在我将来的应用程序中,我们可以有多个文件夹,每个文件夹都有自己的一组JSX文件,这些文件将进入不同的目标文件夹。

我们可以有这样的文件夹:

  • /react_demo/test/jsx/通用-> /react_demo/静态/react/组件
  • /react/test/jsx/static 1 -> /react/静态/react/components1 1
  • /react 2/test/jsx/static 2 -> /react 2/静态/react/components2 2

现在,我如何指定多个src/dest目录并将它们映射到一起?我试着给src/dest一个数组,但它抱怨道:

警告:路径必须是字符串。收到‘./demo_demo/墨盒/脚本/jsx/通用’用途--强制继续。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-13 11:37:48

据我所知,您必须为每个新目的地指定一个新的babel目标:

代码语言:javascript
复制
module.exports = function( grunt ) {
    require('load-grunt-tasks')(grunt);
    grunt.initConfig( {

        babel : {
            options : {
                plugins : ['transform-react-jsx'],
                presets: ['es2015', 'react']
            },
            client : {
                expand : true,
                cwd : './react_demo/test/jsx/common',
                src : ['*.jsx'],
                dest : './react_demo/static/react/components',
                ext : '.js'
            },
            common1 : {//add more targets
                expand : true,
                cwd : './react/test/jsx/common1',
                src : ['*.jsx'],
                dest : './react/static/react/components1',
                ext : '.js'
            }//etc..

        }
    } );

    grunt.loadNpmTasks('grunt-babel');
    grunt.registerTask('default', ['babel:client','babel:common1']);//reg new targets

};
票数 1
EN

Stack Overflow用户

发布于 2018-01-25 10:34:53

几天前,我已经面对这个problem.You可以通过使用配置文件来实现它。

编写一个配置文件(例如:main-文件夹/ grunt /config.js)来注册一些快捷方式,变量使您的任务更加动态。

示例:

代码语言:javascript
复制
var demoConfig = { 
    'module1': 'script/module1',
    'module2': 'script/module2',
    'module3': 'script/module3' 
};
module.exports = demoConfig ;
}

并在每个任务中导入此配置: var config = require('../ config ');

在gruntfile.js中:

代码语言:javascript
复制
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-task');
var getTasks = function() {
    var jsConfig = require('../config/demoConfig'),
        jsTasks = {};
    for (var key in jsConfig) {
        jsTasks[key] = {
            files: [{
                expand: true,
                cwd: './react_demo/test/jsx/' + jsConfig[key],
                src: '**/*.jsx',
                dest: './react_demo/static/react/' +jsConfig[key],
                ext: '.js'
            }]
        };
    }
    return jsTasks;
};
grunt.config('babel', getTasks());};

对于您的场景,您可以在这里更改一些功能并完成它。

我希望这能帮上忙。

欲了解更多信息,请阅读以下内容:dynamic grunt task with babel

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40017224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档