私には 3 つのプロジェクトがあります。Proj A には、多くの異なるプロジェクトで再利用され、編集できないファイルを含む基本的なセットアップが含まれています。そして、プロジェクト A のファイルをベースとして使用するプロジェクト B と C。各プロジェクトには独自の Gruntfile があります。
Proj B および C でいくつかの JS および SCSS ファイルをカスタマイズしたい (例: 色/変数の変更)。ただし、Proj A は時々更新される可能性があるため、最新の変更を B および C にプルするときに上書きされるため、これらの基本ファイルを編集することはできません。 Proj A のファイル。
1)
それを行う方法は、編集したいファイルをコピーし、そのファイル名に単に「オーバーライド」を追加することです。
ui/styles/sass/ _override_colors.scss *(ui/styles/sass/_colors.scss をオーバーライドする必要があります)* ui/scripts/ _override_base.js (ui/scripts/base.js をオーバーライドする必要があります)
問題は、Gruntfile でこのルールをどのように指定すればよいかということです。ただし、コピーするファイルが大きい場合、それはオプションではない可能性があります。これは、2 つの非常に同一の大きなファイルを意味するためです。
2)
もう 1 つの方法は、_overrides.scss という新しいファイルを追加し、それを @import ファイルの最後に追加することです。ただし、多くのことを変更する場合は、面倒で大きすぎる可能性があり、コードの重複を意味するため、それは悪い考えです (変数のみをオーバーライドし、クラスをオーバーライドしない場合を除きます)。
どのアプローチを採用しますか?この問題を解決するための他のより良い方法はありますか?
ありがとう!
web.scss:
@import 'colors';
@import 'grid';
@import 'base';
// @import 'overrides'; ?
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dev: {
options: {
style: 'expanded',
sourcemap: true,
quiet: true
},
files: {
'styles/css/web.css': 'styles/sass/web.scss'
}
}
},
uglify: {
site: {
files: {
'scripts/min/site.js': [
'scripts/dev/forms.js'
'scripts/dev/base.js'
]
}
}
}, ....