如何将bower依赖项移动到位

时间:2014-11-15 14:45:11

标签: javascript html node.js bower

我有一个基于HTML的项目,我使用bower.json来获取所有依赖项:

{
  "name": "MyProject",
  "version": "0.1",
  "main": "index.html",
  "dependencies": {
    "modernizr": "2.8.3",
    "classie": "1.0.1",
    "jquery": "2.1.1",
    "font-awesome": "4.2"
  }
}

整件事都在git中,我不想签入bower_components目录。所以我想使用某种脚本机制将库移动到我的项目中。

情况:

  • 我想拥有以下目录结构:

      
        
    • 的index.html
    •   
    • CSS      
          
      • 的main.css
      •   
    •   
    • JS      
          
      • main.js
      •   
    •   
    • LIB      
          
      • JS      
            
        • 的jquery      
              
          • jquery.min.js
          •   
        •   
      •   
      • CSS      
            
        • jQuery的UI      
              
          • 的jquery-ui.min.css
          •   
        •   
      •   
      • 字体      
            
        • ...
        •   
      •   
    •   
  • 有些图书馆不仅有.js个文件,还有css和字体文件

  • 库结构中的一些库(例如字体很棒)引用文件

更新

我采用基于rake脚本的方法(参见below)。但我想知道,如果基于Javascript / NodeJS有更优雅的方法

3 个答案:

答案 0 :(得分:1)

使用.gitignore文件会更容易吗?

答案 1 :(得分:1)

我认为如果你使用git ignore来避免bower_components和node_modules就可以了。但你需要的是.bowerrc文件:

{
    "directory": "app/libs"
} 

使用该路线,您可以指定目的地文件夹。

和你的bower.json

{
  "name" : "test",
  "version": "0.1",
  "dependencies" : {
    "jquery-ui" : "latest"
  },
  "install" : {
    "path" : {
      "css": "src/css",
      "js": "src/js"
    },
    "sources" : {
      "jquery-ui" : [
        "components/jquery-ui/ui/jquery-ui.custom.js",
        "components/jquery-ui/themes/start/jquery-ui.css"
      ]
    }
  }
}

或者也可以使用像grunt或gulp

这样的任务运行器

答案 2 :(得分:0)

我提出了以下解决方案,该解决方案基于Rake脚本:

desc 'Copy the bower libs to the projects sources'
task :copy_libs do

  js_lib = 'js/lib'
  `rm -fr #{js_lib}`
  `mkdir -p #{js_lib}`

  libraries = {
    js: [
      'jquery/dist/jquery.min.js',
      'jquery/dist/jquery.min.map',
      'modernizr/modernizr.js',
      'classie/classie.js'
    ],
    css: [
      'font-awesome/css/font-awesome.min.css'
    ],
    fonts: [
      'font-awesome/fonts/fontawesome-webfont.woff',
      'font-awesome/fonts/fontawesome-webfont.ttf',
      'font-awesome/fonts/fontawesome-webfont.svg',
    ]
  }


  bower = 'bower_components'

  libraries.each do |type,libs|
    `mkdir -p lib/#{type}`
    libs.each do |lib|
      `cp #{bower}/#{lib} lib/#{type}/`
    end    
  end
end