2015-10-06 41 views
13

Próbuję znaleźć przepływ pracy z udziałem postcs. Potrzebuję częściowych css w jednym folderze, oglądam je i wypakowuję plik css. Plik css musi zawierać plik base.css u góry.Oglądaj wiele plików css z postcsami i wypakuj plik bundle.css

postcss ma flagę --watch i może oglądać wiele plików, ale może wysyłać tylko wiele plików, a nie plik css. Mogę użyć cat, aby połączyć wszystkie pliki i użyć stdin, aby je poprowadzić do postcss. Ale nie mogę wywołać komendy cat z postcss.

Moja struktura plików może wyglądać następująco:

partials/ 
    |_one.css 
    |_two.css 
styles/ 
    |_base.css 
    |_bundle.css 

Jak bym, za pomocą KMP, zorganizować mojej sekcji skryptu korzystania z poleceń CLI, aby osiągnąć swój cel?

Moim głównym problemem jest dowiedzieć się, jak orkiestra budować kroki bez jednego kroku blokowania następnego. Link do działającego przykładu work-flow byłby świetny!

EDIT Mam roztwór roboczy, ale jest bardzo panującymi, ponieważ nie może być używany z sourcemaps, nie może mieć zmienne globalne i jest procesem dwuetapowym. Ale opiszę to tutaj w nadziei, że ktoś może zaproponować lepsze podejście.

Korzystanie z następującą strukturę:

build/ 
    |_stylesheet/ 
     |_default.css (final processed css) 
partials/ 
    |_one.css 
    |_one.htm (html snippet example) 
    |_two.css 
    |_two.htm (html snippet example) 
styles/ 
    |_base.css 
    |_bundle/ (css files from partial/ that is partly processed) 
     |_one.css 
     |_two.css 
    |_master.css (import rules) 

mam dwustopniowy proces w moim package.json. Najpierw upewniam się, że mam folder style/bundle (mkdir -p), a następnie uruchamiam nodemon, aby oglądać pliki css w partials /. Gdy nastąpi zmiana, nodemon działa npm run css:build.

css:build przetwarzaj pliki css w partials/i wypisz je w style/bundle/(pamiętaj, że nie wiem jak oglądać wiele plików i wypisać jeden plik w pakiecie).

Po uruchomieniu css:build, npm uruchamia postcss:build, który przetwarza plik master.css, który @ importuje pliki css z styles/bundle /. Następnie wysyłam (>) przetworzoną zawartość ze standardowego wyjścia do build/stylesheet/default.css.

{ 
    "css": "mkdir -p styles/bundle && nodemon -I --ext css --watch partials/ --exec 'npm run css:build'", 
    "css:build": "postcss --use lost --use postcss-cssnext --dir styles/bundle/ partials/*.css", 
    "postcss:build": "postcss --use postcss-import --use postcss-cssnext --use cssnano styles/master.css > build/stylesheet/default.css", 
} 
+0

Możesz sprawdzić [Gulp] (http://gulpjs.com/) za pomocą modułu [gulp-concat] (https://www.npmjs.com/package/gulp-concat). Istnieje również moduł [gulp-postcss] (https://github.com/postcss/gulp-postcss), chociaż sam tego nie użyłem. – Wouter

+0

Chcę uniknąć używania Gulp lub Grunt. Pracowałem z obydwoma i jestem przekonany, że mogę osiągnąć bardziej przyszłościowy przepływ pracy przy użyciu narzędzi ** npm ** i OS. Ale jestem całkiem nowy w tym podejściu i nie znam * najlepszej praktyki * dla poleceń słuchania i wyzwalania. – dotnetCarpenter

+0

co powiesz na używanie czegoś podobnego ?: '" css: build ":" cat partials/*. Css | postcss -u lost -u postcss-cssnext | style cat/_base.css -> default.css "'. Zrobię to w jednym kroku. Ale nie dostaniesz sourcemaps, ponieważ 'postcss-cli' nie ma opcji dla map źródłowych. – hassansin

Odpowiedz

3

Możesz sprawdzić watch i parallelshell pakiety z KMP. Wierzę, że kombinacja tych dwóch zrobi lewy. Więcej na ten temat: http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/

+0

Dobrze działa z pakiet 'watch', biorąc pod uwagę skrypt o nazwie" css: build "', który wykonuje rzeczywistą pracę: '" watch ":" obejrzyj 'npm uruchom css: build' css "' – Stoffe

3

Może warto rozważyć użycie webpack zamiast tego, aby zbudować pojedynczy plik CSS i inne zasoby, które również mają flagę zegarka. Jest bardzo wydajny i nie trzeba ręcznie odbudowywać cały czas po zmianach w zasobach/plikach.