我的目标是能够将我的项目构建到两个单独的构建文件夹,每个文件夹都有自己的Grunt任务。
我注意到grunt-cli
有--gruntfile
选项,允许您指定要使用的另一个Gruntfile。到目前为止,我有一个Gruntfile.js
完美地工作(靠近Yeoman的股票)。另外,我还有另一个Gruntfile2.js
坐在旁边。
Gruntfile.js
var yeomanConfig = {
app: 'app',
dist: '../www_browser'
};
Gruntfile2.js
var yeomanConfig = {
app: 'app',
dist: '../www'
};
grunt build
意味着运行Gruntfile.js,并且完美地运行。
grunt build --gruntfile Gruntfile2.js
旨在运行Gruntfile2.js
,并且会出现一些打嗝。 (应该构建到../www
文件夹NOT ../www_browser
文件夹)
--gruntfile指令构建到几乎所有任务的正确文件夹,除了 grunt-usemin 和 gunt-contrib-htmlmin 。我知道这是因为这里输出到控制台:
Running "usemin:css" (usemin) task
Processing as CSS - ../www_browser/styles/22f60055.main.css
Running "concurrent:dist" (concurrent) task
Running "htmlmin:dist" (htmlmin) task
File ../www_browser/404.html created.
File ../www_browser/index.html created.
您会在控制台输出中看到 ../ www_browser 。每个其他任务都在预期的 ../ www 文件夹中运行。
这是一个usemin缓存吗? Grunt缓存的事情?或者,无论--gruntfile Gruntfile2.js
指令是什么,只是从默认的Gruntfile.js运行一些任务?
我现在已经放弃尝试从单个Gruntfile中执行多个目标。 Yeoman的Gruntfile.js中有太多的依赖项,它们还不支持多个构建目标,而我花了12个小时无法使用这种方法。
版本信息
$: grunt --version
grunt-cli v0.1.9
grunt v0.4.1
$: npm --version
1.2.25
$: yo --version
1.0.3
的package.json
{
"name": "myapp",
"version": "0.0.0",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-concat": "~0.1.3",
"grunt-contrib-coffee": "~0.6.5",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-compass": "~0.2.0",
"grunt-contrib-jshint": "~0.4.1",
"grunt-contrib-cssmin": "~0.6.0",
"grunt-contrib-connect": "~0.2.0",
"grunt-contrib-clean": "~0.4.0",
"grunt-contrib-htmlmin": "~0.1.3",
"grunt-bower-requirejs": "~0.4.1",
"grunt-contrib-requirejs": "~0.4.0",
"grunt-contrib-imagemin": "~0.1.3",
"grunt-contrib-watch": "~0.4.0",
"grunt-rev": "~0.1.0",
"grunt-usemin": "~0.1.10",
"grunt-mocha": "~0.3.0",
"grunt-open": "~0.2.0",
"grunt-svgmin": "~0.1.0",
"grunt-concurrent": "~0.1.0",
"matchdep": "~0.1.1",
"connect-livereload": "~0.2.0"
},
"engines": {
"node": ">=0.8.0"
}
}
答案 0 :(得分:1)
看起来你正在使用旧版本的grunt-concurrent,它似乎没有将grunt标志传递给子进程。
见这里:https://github.com/sindresorhus/grunt-concurrent/blob/v0.1.0/tasks/concurrent.js#L11
在插件的当前版本上,传递了标志,请参见此处:https://github.com/sindresorhus/grunt-concurrent/blob/v0.3.1/tasks/concurrent.js#L22
所以,我建议你更新你的grunt-concurrent版本:
npm install grunt-concurrent@latest --save-dev