javascript - 构建一些文件,复制其余的

标签 javascript node.js gruntjs

我有一个非常简单的项目。我在 src/ 目录中有一些 bash 文件和一些 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 的 Gruntfile,它将我的 .es6 文件转换为 .js,但不幸的是,我的 bash文件,run_code 未转译。这是我的 grunt 文件:

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: [{ 部分。如您所见,我正在将 src/ 目录中的 .es6 文件编译到 dist/ 目录中。这工作正常,除了它不复制run_code

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

最佳答案

据我所知,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 文件和可复制文件分类到它们自己的目录中以便组织,这样您就可以利用通配符表达式。

关于javascript - 构建一些文件,复制其余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36974543/

相关文章:

javascript - Mocha 中的回调在哪里以及如何定义?

javascript - 常见任务在 GruntJS 中运行一次

node.js - 尝试执行 grunt-ec2 命令时 grunt-ec2 挂起(操作 amazon ec2 存储桶)

node.js - 如何修复 "Cannot Find Module node_sqlite3.node",当它在生产中工作但在发布时抛出此错误

node.js - 在 Docker 容器内或外部运行 Grunt/Gulp?

javascript - 列表未在 v-for 指令中呈现

javascript - 具有大量数据的可排序表的最佳方法

javascript - 使用 mongoDB 和 mongoose 获取附近的地点

mysql - 如何在node js中使用mysql FIND_IN_SET?

java - Android,Java通过HttpClient-HttpPut