Авторефиксер не работает в NPM
Я создаю TaskRunner с NPM - я не хочу использовать Gulp или Grunt... медленно!. Бегущий по заданию работает и работает быстро! Но... автоматический префикс не префикс. В нем нет console.logs, которые также отображаются в терминале. Похоже, его не уволили. Я называю это в функции под названием autoPrefix()
после того, как SCSS скомпилирован в CSS.
У меня есть package.json с задачей объекта сценария, которая указывает на start.js
Этот файл имеет следующий код:
var watch = require('node-watch');
var sass = require('node-sass');
var fs = require('fs');
var browserSync = require('browser-sync');
var autoprefixer = require('autoprefixer');
var postcss = require('postcss');
var inputFile = 'static/scss/compiler.scss';
var outputFile = 'static/css/site.min.css';
/**
* BrowserSync
*/
browserSync({
server: "./",
files: ["./*.html", "static/css/*", "static/js/*"],
logLevel: "silent",
notify: false
});
/* AUTOPREFIXER NOT WORKING! */
var autoPrefix = function() {
postcss([ autoprefixer ]).process({
from: outputFile,
to: outputFile
}).then(function (result) {
result.warnings().forEach(function (warn) {
console.warn(warn.toString());
});
console.log(result.css);
});
}
/**
* Sass Compiler
*/
var compileSass = function(file) {
sass.render({
file: inputFile,
outputStyle: 'compressed'
}, function(error, result) {
if (!error) {
/* Write new file */
fs.writeFile(outputFile, result.css, function(err) {
if (!err) {
if (file) {
autoPrefix();
console.log('', '\x1b[34m', 'Done compiling SCSS, after a change in:', '\x1b[0m' + file);
console.timeEnd('Speed');
console.log('\n');
} else {
autoPrefix();
console.log(' Here we go! Compiling: ' + inputFile + '\n \n' + 'OK done! I\'m watching! ' + '\n');
}
} else {
console.log('Hmm something went wrong.. ' + err);
}
});
} else {
console.log('', '\x1b[31m', 'Error in file: ', '\x1b[0m' + error.file + ' on line: ' + error.line + '\n' + error.message + '\n');
}
});
}
compileSass();
/**
* Watch
*/
watch('static/scss/', function(filename) {
var file = filename;
compileSass(file);
console.time('Speed');
});
Что я делаю неправильно? Я кодирую это как пример здесь: https://github.com/postcss/autoprefixer
1 ответ
Исправлена. Мне пришлось отправить результаты компиляции SASS в PostCSS, а затем префикс.
Код здесь:
var watch = require('node-watch');
var sass = require('node-sass');
var fs = require('fs');
var browserSync = require('browser-sync');
var autoprefixer = require('autoprefixer');
var postcss = require('postcss');
var inputFile = 'static/scss/compiler.scss';
var outputFile = 'static/css/site.min.css';
/**
* BrowserSync, set folders to watch
* Do not set SCSS folder
*/
browserSync({
server: "./",
files: ["./*.html", "static/css/*", "static/js/*"],
logLevel: "silent",
notify: false
});
/**
* Sass Compiler
*/
var compileSass = function(file) {
sass.render({
file: inputFile,
outputStyle: 'compressed'
}, function(error, result) {
postcss([ autoprefixer ]).process(result.css).then(function (result) {
result.warnings().forEach(function (warn) {
console.warn(warn.toString());
});
if (!error) {
/* Write new file */
fs.writeFile(outputFile, result.css, function(err) {
if (!err) {
if (file) {
console.log('', '\x1b[34m', 'Done compiling SCSS, after a change in:', '\x1b[0m' + file);
console.timeEnd('Speed');
console.log('\n');
} else {
console.log(' Here we go! Compiling: ' + inputFile + '\n \n' + 'OK done! I\'m watching! ' + '\n');
}
} else {
console.log('Hmm something went wrong.. ' + err);
}
});
} else {
console.log('', '\x1b[31m', 'Error in file: ', '\x1b[0m' + error.file + ' on line: ' + error.line + '\n' + error.message + '\n');
}
});
});
}
compileSass();
/**
* Watch
* On each watch, compile SCSS and start timer
*/
watch('static/scss/', function(filename) {
var file = filename;
compileSass(file);
console.time('Speed');
});