2016-04-21 6 views
2

Мне нужно выполнить одну функцию JavaScript до того, как Webpack начнет процесс сборки. Функция просто принимает файлы .scss и объединяет их в одну.Функция выполнения WebPack до начала сборки

После этого Webpack должен взять файл результатов. Есть ли возможность сделать это?

На данный момент я запускаю функцию до module.exports в webpack.config.js, но кажется, что ее несинхронная операция. Module.exports выполняется до завершения функции concat() и Webpack не может найти файл .scss.

function concat(opts) { 
    (...) 
} 

concat({ src : styles, dest : './css/style.scss' }); 

module.exports = [ 
    (...) 
] 

ответ

7

Это кажется немного странным Concat SCSS файлы перед запуском Webpack как те рода операции, как правило, обрабатываются самой Webpack.

Это, как говорится, есть несколько способов решить это.

Наиболее очевидный способ был бы извлечь concat части в отдельный файл (например, prepare.js), а затем запустить запустить процесс сборки, запустив что-то по этой линии: node prepare.js && webpack. Сначала будет запускаться подготовка, и если выйдет без ошибок, веб-пакет будет запущен. Обычно это будет добавлено к части вашего пакета package.json, например, scripts.

"scripts": { 
    "build": "node prepare.js && webpack" 
} 

Для достижения такой же, но в более WebPack интегрированным способом вы могли бы сделать то же самое, когда вы извлечь concat часть в отдельный файл, а затем позволить Webpack выполнить этот файл, перед тем строить начинается, с помощью Webpack Shell Plugin, например

const WebpackShellPlugin = require('webpack-shell-plugin'); 
module.exports = { 
    ... 
    plugins: [ 
    new WebpackShellPlugin({ 
     onBuildStart:['node prepare.js'] 
    }) 
    ], 
    ... 
} 
+0

Благодарим вас за решение. Вы уверены, что Webpack может позаботиться о таких операциях? Я не нашел решения для моей «concat» проблемы, поэтому я использую внешнюю функцию. Может быть, какой-то учебник для этого? – Amay

+1

Все зависит от того, как вы собираетесь создавать свои таблицы стилей. В мире Webpack стили обычно «требуют» в ваших исходных файлах javascript, и Webpack затем подбирает их, запускает их через scss-компиляторы/postcss/whatnot, а затем выводит конечный продукт как встроенный стиль или (или несколько) .css'. Взгляните на https://www.bensmithett.com/smarter-css-builds-with-webpack/, http://survivejs.com/webpack/building-with-webpack/separating-css/ и https: // webpack.github.io/docs/stylesheets.html –