-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NpmScript - build #3
Comments
@dhilt Начал делать build - 41df64c.
Нам нужна каждая команда из списка, так ведь? А вот как должен выглядеть код далее... Возможно, последние четыре пункта из списка должны все писаться в package.json'е, примерно так:
(где copy-method.js - это файл с кодом, занимающийся копированием нужных файлов из /temp в /dist. Последние два пункта из Gruntfile) |
@dhilt Ну и теперь ./webpack/config.js после коммита полностью копирует ./webpack.config.js. Возможно, стоит удалить последний и на его место поставить первый файл. |
Пока был в поисках информации насчет jshint, приметил что есть у нас clean-webpack-plugin и переписал удаление /temp вместе с ним - 74acb55. Я так понимаю, плагин с копированием можно не применять, ибо копирование должно идти после двух сборок проекта, production и development. Буду делать отдельным файлом. |
Я исправил несколько важнейших моментов. Prod работает в папке ./dist. Prod собирает как сжатые, так и несжатые файлы. Prod не наблюдает за изменениями. |
@dhilt Так-так, в Gruntfile как я понял prod свои файлы оставлял в ./temp, и далее последние две из восьми grunt-задачи копировали результаты в ./dist. Если я все правильно понял, то если теперь prod оставляет все файлы в ./dist, то копирование не нужно? |
@dhilt По сравнению с исходным репозиторием не хватает двух файлов |
@bitden Да, но нам важен результат, а не путь, которым мы к нему приходим. Таким образом мы сделаем путь короче... Не будем копировать вслед за Грантом дистрибутив, Вебпак сам кладет его сразу куда надо. Но на счет заглушки для jqlite надо подумать, можно ли обойтись буз копирования. Я думаю да, через еще один entry-point в вебпаке. Еще есть проблема, что Banner-комментарии режутся в сжатых версиях. |
@bitden Я кажется понял на счет Баннера, попробуй поменять местами порядок плагинов:
Там важна последовательность. И тогда не очень удобно пока получается с configEnv.plugins, но это мы еще подумаем. |
@dhilt Попробовал, в *.min.js баннер нормально пишется построчно, после предложенной смены порядка кода. Исключая файлы *.js.map |
@bitden Возможно это связано с тем, что я поднял мажорную версию Вебпака до 3. В .map файлах не должно быть никаких банеров. |
@bitden Попробуй https://github.com/webpack-contrib/jshint-loader для замены
|
@dhilt Да, именно эту библиотеку пока и изучаю, сейчас буду пробовать ее применить. А в остальном, нам остается только придумать что-то с jqlite-файлами и подкорректировать команду build в package.json, добавив ей |
@bitden ТЕсты нужно запускать на минифиципрванном дистрибутиве (&& "npm run prod-test" ?). |
@dhilt Так тесты выпадают из данной задачи или надо как-то умудриться их запустить после сборки min-версий файлов, а затем после этого и остальные файлы собрать? А насчет ui-scroll-jqlite думаю лучше использовать copy-webpack-plugin. Иначе с минифицированием можно подумать что этот файл как-то задействован и имеет какую-то роль и тем самым создается путаница, как мне кажется. Кстати говоря, а какая у него роль?) |
@bitden Раньше ui-scroll-jqlite существовал в виде отдельного модуля. Проблемы, предшествовавшие объединению его с модулем ui-scroll, описаны здесь angular-ui#72. Теперь это всего лишь заглушка для обратной совместимости. В принципе, рано или поздно она должна уйти. Следуя semver, это можно будет сделать при переходе на 2.x. Мы не вполне точно следуем semver, поэтому гипотетически его можно было бы убрать уже сейчас... Минифицированные и неминифицированные файлы в новой версии собираются одновременно, соответственно тесты нужно запускать строго после отработки сборщика. И синтаксис |
@dhilt Синтаксис Тем временем, применил jshint-loader - 6904779. Корявенько так применил. Сколько не искал, нигде не мог найти как бы .jshintrc применить как задумано, в итоге пока что сделал его .json-файлом. И тут вопрос есть насчет 'jshint:tests' и 'jshint:sources', кто из этих двух относится к нашим нынешним production и development? |
@dhilt Я пока что склоняюсь к ответу, что development режим должен содержать .jshinrc, а production .jshintrc плюс дополнительно описанные правила в 'jshint:tests':
|
@bitden Я сделал комит с приблизительным результатом по npm run build. Я согласен, что есть отклонения, но посмотри, как оно работает, Webpack кладет прод-сборку в ./dist, а Karma запускает тесты поверх ./dist/min. |
@dhilt Выходит осталось только с jshint по этой задаче определиться? |
@bitden Да, и надо бы сделать так, чтобы Webpack заваливал сборку, если jshint не проходит. |
@dhilt А какие там отклонения? Конечный результат вроде бы в точности как у Gruntfile, исключая по jshint. |
@dhilt Повторю тогда вопрос насчет jshint - 'jshint:tests' и 'jshint:sources', кто из этих двух относится к нашим нынешним production и development? |
@bitden Давай напустим jshint на исходники (./src) одинаково для обоих окружений. А для dev-окружения еще и на тесты (./test). Обрати внимание на файлы .jshintrc – они задают частные правила для папок. |
И вдогоноку переписал немного регулярки - fab01d4. |
@bitden Я заставил jshint-loader и babel-loader работать вместе. Теперь надо разобраться с .json и jshint для тестов. UPD: .jshintrc работает их коробки. Причем можно перекрывать правила, раскидывая .jshintrc файлы по проекту, без дополнительных ссылок. Еще я удалил ./src/.jshintrc. Остались тесты. |
@bitden Остались тесты, я имел в виду jshint на тесты. |
@dhilt Вру, еще не готово. |
@bitden Да, вижу. Проверить просто: замени в globals
и jshint должен выругаться. Еще надо будет удалить верхние комментарии из спек вида
И потом вынести правила в .test/.jshintrc |
@bitden Плагины для дев потеряли смысл, я сделал рефакторинг конфига, надеюсь, тебе это не помешает. Сейчас одна проблема есть с плагинами, она уже давно, насколько я могу судить, это метка compressed/uncompressed в баннере. Она не работает, т.к. оба варианта собираются в окружении prod. |
@dhilt Ничего не помешало, комментарии убрал, правила перенес в отдельный .jshintrc. Но, все еще ничего не работает. Уже отчаялся и полез в node_modules в библиотеку jshint-loader, далее в rcloader и rcfinder, расставлял там console.log'и чтобы увидеть доходят ли с webpack-конфига две команды, два адреса для .jshintrc - и нет, доходит только одна. Пробовал и по отдельности, и массивом в include впихнуть - тоже ничего. А еще есть похоже синтаксическая ошибочка с |
@bitden Надо поискать решение в интернете, не закапывайся слишком глубоко. Скорее всего webpack не может работать с исходниками вне деревьей, растущих из entry points. Задай вопрос на Stackoverflow! как запустить jshint на файлах, не участвующих в сборке? может быть это можно сделать через Karma? |
@dhilt Такс, вопрос задал - https://stackoverflow.com/questions/47291494/webpack-jshint-loader-jshint-doesnt-watch-out-for-two-various-directories. Не знаю насколько удачно, но задал) |
@bitden Добро пожаловать на StackOverflow. 7 просмотров у твоего вопроса, мой 8, без слез не взглянешь, удивительная непопулярность)) Я отредактировал его. Пока же можно продолжить поиски и/или заняться npm start. |
@dhilt Ого, можно оказывается чужие вопросы корректировать, интересно как) Попробую все же еще недолго покопаться через node_modules, очень уж хочется прогуляться по библиотекам и их коду. |
@bitden 👍 На SO работает система привилегий. По-моему начиная с 1000 очков репутации можно вносить правки в чужие вопросы/ответы без модерации. |
@dhilt Кажется мне, без включения файлов в entry point не обойтись. Пока что добавил *Spec.js-файлы в entry point по крайней мере, так все работает славно. За исключением того, что теперь куча файлов создается в корневой папке. Коммит - bdb65e9. Хотя выходит таким образом они тоже проходят сборку и это довольно сильный побочный эффект выходит. |
@bitden Да, это непорядок и нужно найти способ избежать этого. А может быть создать отдельный процесс npm run hint-tests? Который чисто через npm прогоняет jshint? И добавить его в начало npm test через &&? |
No description provided.
The text was updated successfully, but these errors were encountered: