在GruntJS生成我的CSS + JS之后,我希望它将生成的文件复制到服务器上的适当位置,因此我设置了不同的grunt-copy任务。复制到的路径对于开发和生产环境是不同的:
devjs: {
src: paths.dest + '/assets/prod.min.js',
dest: '/srv/www/dev/js/prod.min.js'
},
prodjs: {
src: paths.dest + '/assets/prod.min.js',
dest: '/srv/www/htdocs/js/prod.min.js'
},
如何让grunt watch
知道它所处的环境,从而为该环境启动适当的grunt-copy任务?我是否需要在git repo中跟踪配置文件或定义环境的配置文件,或者有更好的方法吗?
目前我的grunt-contrib-watch.js
有以下内容,但我希望它只能触发副本:devjs或copy:prodjs,具体取决于环境。
js: {
files: [
paths.assets + '/**/*.js',
],
tasks: ['js', 'copy:devjs', 'copy:prodjs']
},
有什么想法吗?谢谢!
答案 0 :(得分:1)
如何让咕噜咕噜的手表知道它所处的环境?
最佳做法是定义NODE_ENV
环境变量以区分环境。然后,您可以使用process.env.NODE_ENV
的一些子句来注册不同的任务
然后,您可以使用不同的配置运行相同的任务名称
例如:
if(process.env.NODE_ENV === 'prod')
grunt.registerTask('mytask', ['watch:prodjs']);
else
grunt.registerTask('mytask', ['watch:devjs']);
另一种方法(在我看来更好的方法)是在每个环境中注册不同的任务 这种方式更明确,更安全。
grunt.registerTask('prod-task', ['watch:prodjs', 'some-other:prodtask']);
grunt.registerTask('dev-task', ['watch:devjs', 'some-other:devtask']);
然后你可以为你的环境运行你需要的任何任务。
grunt prod-task
答案 1 :(得分:0)
我选择使用命令行选项。所以我会使用例如命令行(和cron)上的import UIKit
extension UIView {
class func fromNib(owner: AnyObject? = nil) -> Self {
return UIView.fromNib(owner: owner)
}
class func fromNib<T : UIView>(owner: AnyObject? = nil) -> T {
return UIView.fromNib(withName: T.className, owner: owner) as! T
}
class func fromNib(withName name: String, owner: AnyObject? = nil) -> UIView {
return Bundle.main.loadNibNamed(name, owner: owner, options: nil)![0] as! UIView
}
}
,然后在grunt-contrib-watch.js中有这个:
extension UIView {
func getCopy() -> Self {
return UIView.fromNib()
}
}