我最终符号链接dist
到,src
因为我们需要 Yeoman 编译出 SCSS 和 CoffeScript 文件。创建目录yeoman server
时无法运行这里的无赖。另外令人沮丧的是,当您再次清理目录时。yeoman build
dist
yeoman server
dist
我计划为 Trigger 的生成器创建一个 yeoman 生成器,并添加一些 grunt 任务来模仿Rakefile
我在使用 Sinatra 测试和开发时创建的任务(例如yeoman simulator
、yeoman device
、yeoman testflight
)。
编辑:我现在直接向我添加了一些任务gruntfile.js
。我添加grunt-contrib-copy
并添加了以下子任务。
copy: {
app: {
files: {
"src/": "app/**", // core app files
},
},
compass: {
files: {
"src/styles/": "temp/styles/**", // drop in the compiled coffeescript
}
},
coffee: {
files: {
"src/scripts/": "temp/scripts/**" // drop in the compiled scss
}
}
},
我将这些任务添加到适当的监视命令中,并添加了一个新监视来监视app
目录。
watch: {
coffee: {
files: 'app/scripts/**/*.coffee',
tasks: 'coffee copy:coffee reload'
},
compass: {
files: [
'app/styles/**/*.{scss,sass}'
],
tasks: 'compass copy:compass reload'
},
app: {
files: [
'app/**/*.{html,png,json,css,js}'
],
tasks: 'copy:app'
},
}
Now yeoman server
,它调用yeoman watch
,保持src
最新。
我还带进grunt-shell
来做以下事情。
shell: {
forge_build: {
command: 'forge build ios 2>&1 | tee output',
stdout: true
},
forge_run_device: {
command: 'forge run ios --ios.device device',
stdout: true
},
forge_run: {
command: 'forge run ios',
stdout: true
}
}
并创建一些任务,例如:
grunt.registerTask("sim", 'copy shell:forge_build shell:forge_run');
grunt.registerTask("device", 'copy shell:forge_build shell:forge_run_device');
我对它并不完全满意,但它让我可以继续运行yeoman server
并下降到其他地方的控制台并运行yeoman device
以将其带到设备中。它还将src
目录保存在可以签入的位置。
最终,我将把它移到一个 yeoman 插件中,并添加一些更具体的构建任务来清理适当目标(例如 iOS、Android)的 src 目录,以保持目录大小较小。
编辑:我创建是grunt-forge
为了帮助forge
从 Yeoman 内部运行。我还写了一些关于为 `forge 创建更简洁的输出的博客。