Это продолжение базового рабочего процесса препроцессора Webpack 3 Sass, о котором я писал здесь, включает в себя обработку относительных URL-адресов в Sass для таких вещей, как шрифты и изображения. Популярная карусель Кена Уилера Slick содержит эти типы ресурсов в своем Sass, так что давайте воспользуемся ими в этом упражнении.

Начиная

Обязательное условие: Node.js с npm.

Перейдите к корню проекта в вашем CLI, таком как Терминал, Cygwin или PowerShell.

Введите npm init, чтобы в интерактивном режиме создать файл package.json. Пока можно принять параметры по умолчанию. Метаданные в этом файле могут быть обновлены позже по мере необходимости.

npm init

Теперь в корне проекта должен существовать файл package.json. Этот файл json используется для управления зависимостями проекта, установки параметров конфигурации для поддерживаемых модулей и запуска сценариев npm.

Создайте файл index.html в корне проекта с неупорядоченным списком изображений-заполнителей. Включите ссылку dist/style.css в заголовок документа и ссылку dist/app.js перед закрывающим тегом body. Добавьте атрибут класса с ползунком значения в элемент неупорядоченного списка. Это отличает его от выбора с помощью нашего скрипта и кода стиля: <ul class="slider">

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" media="all" href="dist/style.css">
</head>
<body>
    <ul class="slider">
        <li>
            <h3>Slide 1</h3>
            <img src="https://placehold.it/800x600" />
        </li>
        <li>
            <h3>Slide 2</h3>
            <img src="https://placehold.it/800x600" />
        </li>
        <li>
            <h3>Slide 3</h3>
            <img src="https://placehold.it/800x600" />
        </li>
        <li>
            <h3>Slide 4</h3>
            <img src="https://placehold.it/800x600" />
        </li>
        <li>
            <h3>Slide 5</h3>
            <img src="https://placehold.it/800x600" />
        </li>
    </ul>
    <script async src="dist/app.js"></script>
</body>
</html>
  • Используя Emmet, который встроен в VS Code, вы можете создать содержимое index.html, введя восклицательный знак в первой строке, а затем нажав клавишу табуляции.

ловкий

Установите jQuery и карусель Slick, используя npm.

npm install --save jquery slick-carousel

В папке src/js создайте файл index.js JavaScript, чтобы импортировать входной файл Sass и карусельные модули jQuery и Slick.

index.js

import style from '../sass/main.scss'
import $ from 'jquery'
import 'slick-carousel'

$('ul.slider').slick({
    dots: true
});

Прежде чем мы сможем создать этот JavaScript, необходимо определить конфигурацию Webpack и скрипт npm.

Вебпак и Бабель

Установить Вебпак

npm install --save-dev webpack

Создайте файл webpack.config.js в корне проекта, чтобы транспилировать наш JavaScript ES6 в ES5 для браузера с помощью babel.

webpack.config.js

const path = require('path')
const webpack = require('webpack')

module.exports = {
context: path.resolve(__dirname, './src'),
  entry: {
    app: './js/index.js'
  },
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: '[name].js'
  },
  module: {
    rules: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      use: 'babel-loader'
    }
    ]
  },
  devtool: '#eval-source-map'
}

Установить Вавилон

npm install --save-dev babel-core babel-loader babel-preset-env

Создайте файл конфигурации .babelrc в корне проекта.

.babelrc

{
  "presets": ["env"]
}

Вот как проект структурирован до сих пор.

Строить

Установите cross-dev для согласованной переменной NODE_ENV при запуске сценариев NPM в Windows и OS X.

npm install --save-dev cross-env

Определите команды разработки и сборки для npm-run-script в package.json.

package.json

...

  ],
  "scripts": {
    "dev": "cross-env NODE_ENV=development webpack --watch --progress --colors",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ...
}

В нижней части конфигурации веб-пакета добавьте соответствующие сценарии разработки и сборки npm, используя настройки NODE_ENV.

webpack.config.js

...

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}
  • Обратите внимание, что многоточие … в приведенном выше фрагменте кода не является частью фактического кода и используется только для обозначения кода, который пропускается и не применим к примеру. Имейте это в виду, когда встретите многоточие в оставшихся фрагментах. Чтобы просмотреть весь файл, изучите исходный код.

Использование псевдонима npm-run-scripts npm run для выполнения сборки.

npm run build
  • Для разработки используйте npm run dev для отслеживания изменений и постепенной сборки при сохранении изменений.

Теперь у вас должна быть новая папка dist в корне проекта, в которой выводится пакет Webpack.

Следующая страница охватывает:

  • установка загрузчиков Webpack для обработки Sass
  • установка плагина Extract Text для вывода файла style.css
  • установка плагина Autoprefixer PostCSS
  • создание и импорт файлов Sass
  • повторная сборка и проверка вывода приложения

Первоначально опубликовано на сайте jimfrenette.com 28 января 2018 г.