构建一些文件,复制其余文件

时间:2016-05-02 03:24:31

标签: javascript node.js gruntjs

我有一个非常简单的项目。我有一些bash文件,以及src/目录中的一些JavaScript文件,我想要转换JS文件,然后复制其余文件。

这是我的文件夹结构:

root
 |- dist // Where grunt should output
 |- src
 |   |- run_code  // this is a bash file calling `code`
 |   |- code.es6  // My JavaScript files
 |
 |- Gruntfile.js
 |- package.json

所以目前我有一个调用babel的Grunt文件,它将我的.es6文件转换为.js,但不幸的是,我的bash文件run_code未被编译。这是我的gruntfile:

module.exports = function(grunt) {

    require('load-grunt-tasks')(grunt);

    grunt.initConfig({
        babel: {
            options: {
                presets: ['es2015'],
                plugins: []
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: 'src/',
                    src: ['**/*.es6'],
                    dest: 'dist/',
                    ext: '.js'
                }]
            }
        }
    });

    grunt.registerTask('default', ['babel']);
};

查看files: [{部分。如您所见,我正在将.es6目录中的src/文件编译到dist/目录。除了它不复制run_code

之外,这种方法很好

我可能会在以后添加其他任务,但我的问题是,我该如何复制尚未被grunt任务触及的文件呢?我知道我可以对所有不是.es6的文件进行过滤器复制,但硬编码感觉就像一个非常hacky的解决方案,肯定应该有一些很好的方法用grunt做这个(如果有人知道一种方式)复制并保留更好的权限。

1 个答案:

答案 0 :(得分:3)

尽我所知,cwd表示我们正在从src/目录进行复制而src表示您只需要.es6个文件。所以你实际上并没有告诉它要复制("通过babel",真的)run_code

run_code重命名为run_code.es6或将其添加到src数组中。

如果您只想复制run_code而不尝试对其进行转码,请使用其中一个copy个包。与您添加babel的方式相同,添加grunt-contrib-copy之类的包以使copy任务可用。安装和使用与babel的安装和使用非常相似,为方便起见,引用如下:

安装:

npm install grunt-contrib-copy --save-dev

要使用,请添加:

grunt.loadNpmTasks('grunt-contrib-copy');

对你的initConfig

这样的话
copy: {
  main: {
    files: [
      {
        expand: true,
        cwd: 'src/',
        src: ['run_code'],
        dest: 'dist/'}
      }
    ],
  },
}

我还建议将您的.es6文件和可复制文件排序到他们自己的目录中进行组织,这样您就可以利用通配符表达式。