問題
問題はあなたsrc:
とdest:
構成にあります。postcsssrc: '*.css'
タスクに、見つかったすべての .css ファイルを処理するように要求し、次にdest: style.css
、処理されたすべての .css ファイルを .css という 1 つのファイルに出力するように要求しますstyle.css
。grunt-postcss
最後に処理したファイルのみを に書き込みますstyle.css
。
ソリューション
あなたの問題にはいくつかの解決策があります。
#1
まずdest
、オプションを指定しない場合、grunt-postcss
すべてのファイルが処理および更新src
され、元のファイルが上書きされます。
postcss: {
options: {
processors: [
require('autoprefixer')({browsers: ['last 2 versions']}),
require('cssnext')(),
require('precss')()
]
},
dist: {
src: '*.css'
}
}
src
ファイルを保持したい場合はあまり良くありません。
#2
でfilesオプションを使用できexpand
ます。
postcss: {
options: {
processors: [
require('autoprefixer')({browsers: ['last 2 versions']}),
require('cssnext')(),
require('precss')()
]
},
dist: {
files: [
{
src: '*.css',
dest: 'build/',
expand: true
}
]
}
}
これにより、すべての .css ファイルが処理され、build/
フォルダーに出力されます。
#3
grunt-contrib-copyを使用して css ファイルを出力フォルダー ( など) にコピーし/build
、 でその場で処理しますgrunt-postcss
。完全な例:
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-postcss');
grunt.registerTask('css', ['copy:postcss', 'postcss']);
grunt.initConfig({
copy: {
postcss: {
files: [
{
src: 'css/*.css',
dest: './build/',
expand: true,
flatten: true
}
]
}
},
postcss: {
options: {
map: true, // inline sourcemaps
processors: [
require('autoprefixer')({browsers: ['last 2 versions']}),
require('postcss-cssnext')(),
require('precss')()
]
},
dist: {
files: [
{
src: 'build/*.css'
}
]
}
}
});
};
expand
およびオプションの説明については、ファイルflatten
に関する grunt ドキュメントを参照してください。
ここでは、タスクを使用しcopy
て src css ファイルをビルド フォルダーにコピーし、タスクを使用してpostcss
それらを適切に処理します。で両方のステップを実行するために呼び出すことができるエイリアスタスクを作成しました。grunt.registerTask('css', ['copy:postcss', 'postcss']);
grunt css
#4
ファイルを 1 つの css ファイルに連結main.css
する場合 (postcss を使用する私の好みの方法)、ファイルを作成し、precss の@importまたはpostcss-importを使用して、他のすべての css ファイルを にプルしますmain.css
。そのようです:
postcss: {
options: {
processors: [
require('autoprefixer')({browsers: ['last 2 versions']}),
require('cssnext')(),
require('precss')()
]
},
dist: {
src: 'main.css',
dest: 'build/main.css'
}
}
main.css:
@import "style.css";
@import "style-human.css";
ここでpostcss
は、css ファイルの検索、処理、および連結を処理します。このgrunt
タスクは、main.css
.
ご参考までに
パッケージは数か月間更新されていないため、postcss-cssnext
代わりにパッケージを使用する必要があります。cssnext
cssnext
また、postcss-cssnext
と を一緒に使用することは、すでに含まれているautoprefixer
ため冗長です。postcss-cssnext
autoprefixer