задний план
- Если вы хотите сделать тест или демонстрацию чего-то, вам нужно создать новый проект. Если начинать с 0, то долго настраивать много чего, если напрямую использовать какие-то популярные скаффолдинги, типа vue-cli и т.п., для работы черного ящика, то нужно читать документацию, а она сложно разглядеть что там...
- Фактически, в определенном проекте для создания нового компонента должны быть созданы некоторые фиксированные файлы, такие как xxx.js, xxx.html, xxx.css, и может быть некоторый фиксированный контент, который необходимо скопировать вручную. .
- Проекты, которые я обычно делаю, свалены на полки, а конфигурацию конструкции и прочее наполнение я не пробовал...
Настоящим
- Повысьте производительность и повторно используйте некоторые многоразовые вещи
- Создавайте собственные строительные леса, знакомьтесь с конфигурациями сборки и разбирайтесь в разработке строительных лесов.
строительные леса
инструмент
- написание команды командира, например, init
- мел делает результат цветным
- скачать-git-repo, скачать шаблон
- Взаимодействие с командной строкой inquirer для получения пользовательского ввода
- или индикатор выполнения
- log-символы выводят некоторые знаки, такие как √
- движок шаблонов руля, более сложные или продвинутые точки могут работать с металлургическим мастером
шаг
- выполнить команду инициализации
- Для взаимодействия с пользователем позвольте пользователю ввести описание проекта, автора и другую информацию.
- Загрузите соответствующий файл шаблона в соответствии с пользовательским вводом.
- Замените соответствующее содержимое файла шаблона в соответствии с информацией, введенной пользователем.
- Заканчивать
код
Код не опубликован, вы можете перейти кcreate-repo-cliСсылаться на
Конфигурация общих проектов для WebPack для инструментов сборки
Примечание. Все, что связано с классом сборки, должно быть установлено в разделе devDependencies, то есть добавить --save-dev при установке.
webpack
Конфигурация всех функций здесь не указана по порядку, написана только конфигурация некоторых классов оптимизации. Если вы хотите узнать все конфигурации, вы можете перейти непосредственно кwebpack-project-template
- webpack-merge
Конфигурация среды разработки, производственной среды и ssr записывается в отдельные файлы, которые легко поддерживать. Извлеките общие части, а затем передайтеwebpack-mergeПриходите сливать извлеченную часть. пример:
const merge = require('webpack-merge')
const base = require('./webpack.base.config')
const dev = {...}
module.exports = merge(base, dev)
- copy-webpack-plugin
Скопируйте отдельные файлы или целые каталоги в каталог сборки. Подходит для копирования некоторых статических ресурсов, таких как картинки и т.п.
const CopyPlugin = require('copy-webpack-plugin')
new CopyPlugin([
{ from: path.resolve(__dirname, 'public'), to: '../dist/public' }
]),
- mini-css-extract-plugin
Плагин, который извлекает CSS в отдельные файлы, создает файл CSS для каждого файла js, содержащего CSS, и поддерживает загрузку CSS и sourceMap по требованию.
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
new MiniCssExtractPlugin({
filename: 'chunk.[name].[contenthash:8].css',
}),
- friendly-errors-webpack-plugin
Когда Webpack компилируется по умолчанию, будет много бесполезной информации, которую нужно очистить, отображается только небольшое количество информации, и ее легко устранить. Используйте этот плагин, чтобы очистить консольные сообщения. Вы также можете настроить обратные вызовы обработки ошибок и т. д.
const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin')
new FriendlyErrorsWebpackPlugin(),
- happypack
Многопоточные сборки для более быстрой сборки
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
new HappyPack({
id: 'babel',
loaders: ['cache-loader', 'babel-loader?cacheDirectory'],
threadPool: happyThreadPool,
}),
- speed-measure-webpack-plugin
Чтобы построить измерение скорости каждого маршрута, например, время, затраченное загрузчиком и плагином, вы можете выполнить некоторые целевые оптимизации, посмотрев на затраченное время...
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')
const smp = new SpeedMeasurePlugin()
module.exports = smp.wrap(merge(base, dev))
eslint
Спецификация кода обязательна. Использование eslint здесь также поддерживает проверку типа ts, ведь tslint прекратил техническое обслуживание, а eslint официально рекомендуется для ограничений. В отрасли существует несколько стандартных спецификаций, таких как airbnb. Здесь я унаследовал eslint-config-airbnb и внес небольшие изменения. Если вы используете его напрямую, это нормально:
//.eslintrc.js
module.exports = {
extends: ['eslint-config-airbnb'],
}
Commitlint
Унифицируйте и стандартизируйте формат коммита, чтобы информация о коммите отображалась аккуратно. Установите commitlint, @commitlint/cli, @commitlint/config-conventional
//package.json
"pre-commit": [
"lint"
],
"husky": {
"hooks": {
"commit-msg": "commitlint -e .git/COMMIT_EDITMSG"
}
}
//commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'scope-empty': [0],
},
}
Общая конфигурация проекта с накопительным пакетом в качестве инструмента сборки
rollup подходит для создания библиотек инструментов. Конфигурация, которую он использует, на самом деле аналогична по функциям webpack. Конкретная конфигурация не детализирована. Если вы хотите знать, вы можете увидетьrollup-project-template
С руководством пользователя и соответствующим кодом
create-repo-cli
A cli to create project quickly...
install global
sudo npm install create-repo-cli -g
create webpack project
- create-repo init [project-name]
- choose webpack template type
- run
yarn && yarn start
create rollup project
- create-repo init
- choose rollup template type
- run
yarn - cd src/[component-name]
- run
yarn start
code
наконец
- Для получения дополнительной информации, пожалуйста, следуйте за мнойblog, дай мне звезду~
- Если вы считаете, что контент полезен, вы можете обратить внимание на мой официальный аккаунт «Front-end Q» и учиться и расти вместе~~