我正在尝试使用Grunt项目设置包含两个任务的Bower依赖项:开发和部署。目前,项目文件夹结构如下:
.
├── bower_components
│ ├── animate.css
│ ├── jquery
│ ├── semantic-ui
│ └── wow
├── dist
│ └── assets
│ ├── styles
│ └── js
├── node_modules
└── src
└── assets
├── less
└── js
我目前正在使用grunt-wiredep自动将Bower依赖项包含在
dist
中的HTML文件中。我试图将bower_components
保留在dist
文件夹之外,以保持开发和部署的分离(尽管在开发过程中,网站是从dist
提供服务的)。由于我对此还不熟悉,因此在找到正确的grunt/bower模块和最佳实践来开发和部署方面,我完全想象力不足(是的,Yeoman可以处理很多内容,但我正在尝试学习)。我的当前设想是:
- Connect从
dist
文件夹提供HTML页面。 - 在开发过程中,Bower组件将自动包含在页面中(wiredep),但需要从
dist
文件夹内提供服务(grunt-wiredep-copy)。 - 在部署中,Bower组件将获取缩小版本,并将它们与项目JS和CSS文件合并,或者仅与单个JS和CSS文件中的Bower组件合并。
JS和LESS/CSS合并很容易,每种类型都有相应的uglify和minify grunt模块。但是,bower文件被排除在这些过程之外,wiredep和wiredepCopy似乎没有提供一种简单的方式来“清理”(压缩/合并并更新HTML文件中的相应链接)以进行部署任务。甚至在开发任务期间,wiredepCopy也不会更新HTML中对已移动文件的引用,这对我来说似乎很奇怪(并恳求拉取请求)。也许wiredep不是前进的方向?谢谢!