我有一个非常简单的项目。我有一些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做这个(如果有人知道一种方式)复制并保留更好的权限。
答案 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
文件和可复制文件排序到他们自己的目录中进行组织,这样您就可以利用通配符表达式。