Используя webpack с существующим PHP и проект на JS
У меня есть существующий проект PHP с jQuery и Bootstrap, не используя каких-либо интерфейсных рамки.
Я пытаюсь использовать webpack упаковщик модуль для того, чтобы создать единую точку входа для моего проекта ресурсами, управление с JS зависимостей с узел JS менеджер пакетов, выполнять задачи как минимизировать JS и в CSS, изображения изменение размера...и т. д. И улучшить время загрузки браузера, необходимый для загрузки одной страницы.
Я наткнулся на webpack учебники и надо установить его и установить его dev-сервер, но проблема в том, что я не могу понять, как я буду конвертировать все js скрипты и CSS ссылки в проекте (где у меня много jQuery и CSS библиотеки, которые используются для предоставления нескольких функций в проекте) использовать webpack.
Я должен переписать все мои JS и CSS файлы таким образом, что подходит webpack? Как сделать успешный переход?
Кроме того, я не способен управлять моей текущей PHP-приложение на webpack dev-сервер, это предназначено, чтобы работать там в первую очередь? Это только листинг директории проекта в то же время.
Я создал файл-тест `index.js и использовать следующую конфигурацию webpack:
var path = require('path');
var webpack = require('webpack');
module.exports =
{
entry: [
'./public/js/index.js',
'webpack/hot/dev-server',
'webpack-dev-server/client?http://localhost:8080'
],
plugins: [
new webpack.HotModuleReplacementPlugin()
],
output: {
path: path.join(__dirname, "public/dist/js"),
publicPath : "http://localhost:8080/my_proj/public/dist/js",
filename: "bundle.js"
}
};
Я добавил `bundle.js на мой загружает скрипт для тестирования следующим образом надеются, что приложение будет работать на webpack dev-сервер:
<script type="text/javascript" src="public/dist/js/bundle.js"></script>
<script type="text/javascript" src="public/js/jquery.min.js"></script>
<script type="text/javascript" src="public/js/jquery.migrate.js"></script>
<script type="text/javascript" src="public/js/jquery.bxslider.min.js"></script>
<script type="text/javascript" src="public/js/jquery.appear.js"></script>
<script type="text/javascript" src="public/js/jquery.countTo.js"></script>
<script type="text/javascript" src="public/js/bootstrap.js"></script>
Пожалуйста, помогите мне понять вот концепция и как я могу успешно сделать эту миграцию?
Во-первых, чтобы ответить на ваши вопросы:
Нет, вы выиграли'т придется переписывать свои активы. Наверное. См УСБ и границы разделы ниже.
Предупреждение: Я'будете только взять на себя небольшую часть вашего вопроса. Сфера его применения слишком широка, чтобы быть упакованы в одном ответе на StackOverflow. Я только связаться с
webpack
и `webpack-CLI и установлен как (дев) зависимостей вашего проекта (не только в глобальном масштабе):Этот пакет позволяет глубоко объединить несколько конфигураций webpack. Мы хотим использовать его для создания webpack конфигураций в зависимости от наших текущих условиях.
Изменения в конфигурацию
Теперь отрегулируйте
build/config.base.js
:Файл явно не просто экспортировать пустой объект прямо сейчас, но мы'll необходимо, чтобы для следующих шагов. Поместите этот код в ваш
build/config.production.js
:И почти тот же код входит в ваши build/config.development.js`:
Я думаю, это'ы довольно интуитивно, что это делает: С помощью webpack с config.development.js` конфигурация будет получать общую конфигурацию и объединять свои конфигурации в декларацию.
...и наоборот для "производственной" среды. Эта команда довольно неуклюжим, чтобы использовать, но не беспокойтесь, мы'МР рассмотреть это позже.
Сделать некоторые вспомогательные файлы
Есть информация, что мы'будете хотеть, чтобы централизовать, чтобы сделать их легко заменяемыми. Пути к файлам такую вещь. Так давайте'ов извлечь их. Создать paths.js
в папке
строить` и его экспортировать некоторые пути мы'll хочу использовать в дальнейшем:Создать псевдонимы
Как уже упоминалось выше, мы могли бы технически запустить нашу сеть строить в режим "развития" такой:
Что'если команда слишком многословен, так давайте'ы изменить. Это's путь более удобным для запуска процесса сборки через
сценарии НПМ
. Добавить один скрипт в среде для упаковки`.в JSON вот так:Теперь вы можете запустить вашу сборку цепи с НПМ запустить Дев
ОТВ
. НПМ запустить прод` – который намного легче запомнить и быстрее набрать. ...как только там'Эс ничего строить, конечно.Комплект На JavaScript
Ладно, это было на самом деле достаточно много работы, не слишком много до сих пор достижения. Так давайте'ы начать с чего-нибудь более интересного: мы'Лл определить точку входа на JavaScript.
Определить точку входа
Поместите следующий код в ваш
build/config.base.js
(полностью заменив существующий код):Создать файл JavaScript
Приведенная выше конфигурация ожидает
index.js
жить впапке src/Яш
(как определено в build/paths.js`). Позвольте'ы создать файл со следующим содержимым:Как вы можете видеть, `index.js просто импортировать все файлы, которые вы хотите использовать. Если теперь вы запустите
из вашего терминала, подать
scripts.js будет создан в вашей папке dist
. Вы можете включить в разметку с равнины ol' `<сценарий и GT; тег. Поздравляем, вы'ве получил рабочую webpack установки!Нырять глубже
Этот мини-учебник на самом деле все, что вы можете сделать с webpack. Это дает вам довольно прочный фундамент для вашей конфигурации, которые теперь вы можете заполнить все, что вам необходимо. И что на самом деле будет довольно много вещей. Я'список Лл еще несколько вещей, которые вы, возможно, хотите улучшить, с некоторыми ссылками, чтобы прочитать.
webpack понятия
Если вы хотите использовать webpack, это может быть трудно сделать это, если вы не'т знаем о ее базовых понятий. Юхо Вепсамиäлäинэн создал большое руководство по началу работы с webpack, который мне очень помог. Он's также webpack из основных факторов, поэтому вы можете быть уверены, что он знает, что он'ы говоришь. Особенно погрузчики это понятие вы'МР действительно нужно знать. Много подсказок в этом списке также пояснили там. Подробнее: SurviveJS – webpack учебник
Расщепления Код
Он делает то, что название'ы сказать: возможно, вы не хотите, чтобы упаковать все ваши JavaScript в один громоздкий выходной файл. Это'ы работа webpack делает для вас, чтобы отделить части вашего пакета который нужен только на определенных страницах вашего приложения. Также, в зависимости от того, как часто вы're работая над проектом'ы на JavaScript, это может быть хорошей идеей, чтобы отделить сторонний код от вашего пакета для кэширования целей. Подробнее: webpack документации – разделение кода
# Кеш#
Возможно, вы хотите улучшить свой сайт'ы кэширование поведение путем добавления хэш в вашем комплекте именами файлов, который зависит от их содержания. Это позволит создать (например)
script.31aa1d3cad014475a618.js
вместоscripts.js
. Затем этот файл может быть кэширован на неопределенный срок, потому что, как только его содержимое изменится, то имя файла будет также меняться. Ваш PHP-код может затем использовать webpack-манифест-плагин для получения доступа к сгенерированные имена файлов. Подробнее:chunkhash
о том, как обогатить свой набор имен файлов с хэшамиwebpack-манифест-плагин
о том, как создатьманифеста.формат JSON
, содержащий имена файлов вашего текущего пакетаTranspiling
В случае, если вы хотите использовать современный код ES2015 на сайте'ы на JavaScript (и ориентируетесь номера-вечнозеленое браузеры), вы'll хочу transpile их регулярно в ES5. (Если термин "и ES2015" не имеет никакого смысла для вас, вы'вновь, скорее всего, не используете, и можете игнорировать этот пункт.) Подробнее: `Бабель-погрузчик – это погрузчик, который работает Бабеля на ваши скрипты
В CSS
Есть webpack погрузчики для CSS. И Сасс. И Что PostCSS. Все, что вам нужно. И поскольку вы'повторно, вероятно, не планирует включать в свой CSS через
<сценарий и GT; теги, узнать *извлечение текста плагин* для создания реальных
.в CSS файлы.если ваш путь выходному общественных/дист/УСБ/пачка.в CSS, будет преобразован в:
Подробнее:
экстракт-текст-webpack-плагин
Сокращение
В Прямом Эфире Перезагрузки
Ваши проблемы с прямых перегрузки есть довольно простая причина: webpack Дев-сервер-это простой Node.js сервер обслуживает только статические файлы. Для Вы'ре дело, webpack-dev-сервер
, наверное, это неправильный инструмент на всех. Попробуйте webpack-livereload-плагин, а не на прямую перегружатель что вы можете просто включить через
<сценарий и GT; тег. Подробнее:webpack-livereload-плагин
Source Карты
Этот код в обычный текстовый файл JavaScript будет делать
myFunc
доступен везде в JS коде. Но так как webpack код пачка обернута внутри функции обратного вызова (и, таким образом, оставляя в глобальной области видимости), там выиграл'т быть никакого доступа к этой функции больше. Сторонних библиотек не должно быть проблемой, они обычно назначают их Globals для объекта "окно", но если вы'ве уже написано JS кода в вашем проекте, вы должны знать, что.Автоматизировать!
Вы'll хочу автоматизировать свой рабочий процесс, насколько это возможно. Попробуйте запустить
НПМ запустить прод
через крюк мерзавца, прежде чем нажимать / после потянуть.Надеюсь, что это помогает.
На основе существующих Вью-шаблонах и и ответ от @Loilo я сделал шаблон Vue вы можете установить с вю-в CLI`. Этот шаблон решает вам для приложение Vue можно расширить или интегрировать в существующее окружение.
devwatch:
Этот шаблон имеет дополнительную опцию devwatch запуска, который наблюдает за filechanges вместо использования webpack-dev-сервер. Это делает его пригодным для любой существующей среде web-сервера.
Дэв:
чтобы запустить его с по умолчанию webpack-dev-сервер, удалить
<скрипт в src="и http://localhost:35729/livereload.js"></скрипт> " в " index.html
:строительства:
для создания своего проекта для производства: