を使用すると、次のエラーが発生しますgrunt compass
。
「プロジェクト ディレクトリから個々のスタイルシートをコンパイルする必要があります。」
私はうなり声で3つの異なる方法で試しました。詳細は以下をご覧ください。
私のフォルダ構造:
test \
Gruntfile.js
package.json
\ node_modules \
\ _src \ (this is the root folder of my Jekyll site)
\ config.rb
\ index.html
\ static/
\ _sass \
\ css \
\ images \
\ js \
機能するもの:
を使用したり使用したりしなくても、すべてが正常に機能します。grunt
/_src/config.rb
#project_path = "_src/"
http_path = "/"
css_dir = "css"
css_path = "static/" + css_dir
sass_dir = "_sass"
sass_path = "static/" + sass_dir
images_dir = "images"
images_path = "static/" + images_dir
output_style = :expanded
relative_assets = true
line_comments = false
だから、/src
私は で問題なくコンパイルできますcompass watch
。
うまくいかないこと
とにかく、私はすべての GUI アプリを捨てて、grunt
. そこから問題が始まりました。
私も最新です:
$ grunt --version
>> grunt-cli v0.1.13
$ npm -v
>> 1.4.3
$ node -v
>> v0.10.26
1回目
私が最初に試したのは、既存のものを使用しようとすることでしたconfig.rb
:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// Config
watch: {
compass: {
files: ['**/*.{scss,sass}'],
tasks: ['compass:dev']
},
js: {
// PLACEHOLDER HERE
}
},
compass: {
dev: {
// dev options
// ↓↓↓ HERE'S THE COMPASS CONFIG FILE ↓↓↓
options: { config: '_src/config.rb' }
},
prod: {
// prod options
},
},
jshint: {
options: { jshintrc: '.jshintrc' },
all: ['Gruntfile.js', '_src/static/js/*.js']
},
browserSync: {
files: {
src : [
'_src/static/css/*.css',
'_src/static/images/*',
'_src/static/js/*.js',
'_src/**/*.html'
],
},
options: {
watchTask: true
}
}
});
// Load the Grunt plugins.
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-browser-sync');
// Register the default tasks.
grunt.registerTask('default', ['compass:dev', 'browserSync', 'watch']);
grunt.registerTask('prod', ['compass:prod']);
};
grunt
エラーなしで動作し、ファイルの変更も認識しますが、 sass/test
をコンパイルしません。css ファイルは作成されません。
私が試したところgrunt compass watch --verbose
、中止されました:
Running "compass:prod" (compass) task
Verifying property compass.prod exists in config...OK
File: [no files]
Options: cssDir=["_src/static/css"], sassDir=["_src/static/_sass"], imagesDir=["_src/static/images"], javascriptsDir=["_src/static/js"], fontsDir=["_src/static/fonts"], outputStyle="compressed", relativeAssets="true", noLineComments="true"
Options: cssDir=["_src/static/css"], sassDir=["_src/static/_sass"], imagesDir=["_src/static/images"], javascriptsDir=["_src/static/js"], fontsDir=["_src/static/fonts"], outputStyle="compressed", relativeAssets="true", noLineComments="true", time
You must compile individual stylesheets from the project directory.
Warning: ↑ Use --force to continue.
Aborted due to warnings.
…まったくわかりません。
2 回目の試行 – 優先試行
config.rb
とにかく座っているのが好きではないので/_src/
、それを削除して次のものに置き換えoptions: { config: '_src/config.rb' }
ましGruntfile.js
た:
options: {
//config: '_src/config.rb'
cssDir: ['_src/static/css'],
sassDir: ['_src/static/_sass'],
imagesDir: ['_src/static/images'],
javascriptsDir: ['_src/static/js'],
fontsDir: ['_src/static/fonts'],
outputStyle: 'expanded',
relativeAssets: 'true',
noLineComments: 'false'
}
エラーは前のものとまったく同じです。
プロジェクト ディレクトリから個々のスタイルシートをコンパイルする必要があります。
3回目の試行
最後の手段としてconfig.rb
、ルート ( /test
) に追加して Gruntfileproject_path = "_src"
で使用してみました。options: { config: 'config.rb' }
これは私の他の試験と同じくらいうまくいきませんでした。
Gruntfile のみのバージョンが機能することを本当に望んでいます。コンパスのベース パスがうまく機能していないようですが、どうすればよいかわかりません。
これを解決するためにStackExchangeですでに読んだものの抜粋
私はすでに読んだ:
- ビルドの自動化 - Grunt コンパス タスクはこのディレクトリ構造と互換性がありませんか? - スタックオーバーフロー
relativeAssets: 'false'
トリックを試した
- sass - コンパスプロジェクトで「プロジェクトディレクトリから個々のスタイルシートをコンパイルする必要があります」エラー - コードログ
- ここには新しいアイデアはありません。私のディレクトリは、Sass、CSS、JS などですべて異なります。
- ビルドの自動化 - Grunt コンパス タスクはこのディレクトリ構造と互換性がありませんか? - スタックオーバーフロー
- 私の問題と非常によく似ています。しかし、OP はファイルを使用したいと考えて
config.rb
おり、自分のフォルダー構造内に配置することを好みました。
- 私の問題と非常によく似ています。しかし、OP はファイルを使用したいと考えて
- sass - コンパスプロジェクトで「プロジェクトディレクトリから個々のスタイルシートをコンパイルする必要があります」エラー - コードログ
- 解決策としてのコンパスのみの質問
compass init
。それでも、うなり声なしで使用すると、私のコンパスは機能します。だから私はこれを却下した。
- 解決策としてのコンパスのみの質問
PS: RVM と Git も使用しています。でも、ここは関係ないと思います。
アップデート:
小さなステップ…いくつかの進歩(実際にはそうではありません):
/Gruntfile.js
compass: {
dev: {
// dev options
options: {
config: 'config.rb',
cssDir: '_src/static/css',
sassDir: '_src/static/_sass'
}
},
config.rb を追加する理由がわかりません (上記の「2 回目の試行」のようにすべてを書き留める代わりに、すべてが変更され、grunt は最終的に css ファイルを出力することを決定します。
/config.rb
http_path = "/"
css_dir = "static/css"
sass_dir = "static/_sass"
images_dir = "static/images"
javascript_dir = "static/js"
fonts_dir = "static/fonts"
relative_assets = false
サス:
.logo {
background-image: image-url($logo);
//width: image-width($logo);
//height: image-height($logo);
}
レンダリングされた CSS:
// relative_assets = true
// image still shows up, but it's not the sites root
// /test/_src/static/images ==> _src should be the root
background-image: url('../../../static/images/gaya-design-logo.png');
// relative_assets = false
background-image: url('/static/images/gaya-design-logo.png');
エラーも表示されます:
WARNING: 'gaya-design-logo.png' was not found (or cannot be read) in /Users/pattulus/Sites/test/static/images
通常の使用時にこれも取得するので、それは「問題ありません」compass watch
。ただし、うなり声を上げて、SASSコードの2行のコメントを外すと、これを吐き出して中止します。
Errno::ENOENT on line ["28"] of /Users/pattulus/.rvm/gems/ruby-2.0.0-p451@test/gems/compass-0.12.6/lib/compass/sass_extensions/functions/image_size.rb: No such file or directory - /Users/patte/Sites/test/static/images/gaya-design-logo.png
「通常のコンパス」が機能するので奇妙です。コンパスをグローバルにインストールしませんでした。gem はこのプロジェクト フォルダーでのみアクティブです。したがって、その可能性は排除されます。