フロントエンドの依存関係をバージョン管理システムから移動しようとしています。Bower.io と Grunt を組み合わせれば、これが可能になります。
ただし、複数のベンダー ライブラリをバンドルしても解決できないという問題が発生します。たとえば、コンポーネントディレクトリが Bower.io が依存関係を保存するディレクトリである次のディレクトリ構造があるとします。
├── assets
└── components
├── bootstrap
│ ├── img
│ │ └── glyhs.gif
│ └── less
│ └── bootstrap.css
└── jquery-ui
├── css
│ └── style.css
└── images
├── next.gif
└── prev.gif
ここで、jQuery のstyle.cssと Bootstrap のbootstrap.cssの両方をバンドルしたいとします。このバンドル ファイルをassets/bundled.cssに保存します。
ただし、このファイルでは、元の画像 (../images/next.gif および ../img/glyhs.gif) への参照が正しくありません。それらを機能させるには、書き直す必要があります (つまり、../images/next.gif => ../components/jquery-ui/images/next.gif)。私は、この URL の書き換えは Grunt ができるべきことだと信じています。しかし、 cssmin/less/copy tasks を使用してこれを機能させることはできないようです。たとえば、次の Grunt セットアップ (1 つのファイルのみを移動する) は機能しません。
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
less: {
options: {
compile: false,
relativeUrls: true
},
bootstrap: {
src: 'components/bootstrap/less/bootstrap.less',
dest: 'assets/bootstrap.css'
}
}
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.registerTask('dist-css', ['less']);
};
また:
Grunt の設定を誤ったか、何か間違ったことをしましたか?
または、私が説明しているワークフローは単に正しいものではなく、代わりに別のワークフローを使用する必要があります。
ありがとう!