我目前使用grunt-contrib-concat进行此设置:
concat: {
injectedJs: {
'dist/js/inject/beatportInject.js': ['src/js/thirdParty/jquery.js', 'src/js/inject/beatportInject.js'],
'dist/js/inject/streamusInject.js': ['src/js/thirdParty/jquery.js', 'src/js/thirdParty/lodash.js', 'src/js/inject/streamusInject.js'],
'dist/js/inject/streamusShareInject.js': ['src/js/thirdParty/jquery.js', 'src/js/thirdParty/lodash.js', 'src/js/inject/streamusShareInject.js'],
'dist/js/inject/youTubeInject.js': ['src/js/thirdParty/jquery.js', 'src/js/thirdParty/lodash.js', 'src/js/inject/youTubeInject.js'],
'dist/js/inject/youTubeIFrameInject.js': ['src/js/thirdParty/jquery.js', 'src/js/thirdParty/lodash.js', 'src/js/inject/youTubeIFrameInject.js']
}
}
此代码有效,但这些字符串中显然有很多非 DRY 代码。
我希望通过表达以下事实来解决这个问题:
- 总是希望 'dest' 是 'dist/js/inject/'
- 总是希望 'src' 以 'src/js/' 开头
所以,在我看来,我可以说类似于这个伪代码的话:
concat: {
injectedJs: {
files: [{
expand: true,
dest: 'dist/js/inject/',
cwd: 'src/js'
//'beatportInject.js': ['thirdParty/jquery.js', 'inject/beatportInject.js'],
//'streamusInject.js': ['thirdParty/jquery.js', 'thirdParty/lodash.js', 'inject/streamusInject.js'],
//'streamusShareInject.js': ['thirdParty/jquery.js', 'thirdParty/lodash.js', 'inject/streamusShareInject.js'],
//'youTubeInject.js': ['thirdParty/jquery.js', 'thirdParty/lodash.js', 'inject/youTubeInject.js'],
//'youTubeIFrameInject.js': ['thirdParty/jquery.js', 'thirdParty/lodash.js', 'inject/youTubeIFrameInject.js']
}]
}
}
我的想法在那一点上落空了。这是否可以通过 Grunt 实现,还是我需要进行一些重复?