2016-04-20 3 views
2

После обновления версии Meteor до версии 1.3.x NPM действительно пришел в игру. Но, как всегда, есть задняя сторона монеты: размер сборки. На meteor 1.2.x размер сборки ~ 50MB, ~ 7k файлов На meteor 1.3.x размер сборки ~ 190MB, ~ 27k файлов.Как удалить файлы npm из сборки meteor

Двадцать семь тысяч файлов. Это довольно много. Не говоря уже о размере пути, превышающем 256 (проблема для пользователей Windows). Я вникаю в то, что метеор входит в сборку, и кажется, что все npm_modules здесь со всем, что нужно для создания некоторых модулей и их зависимостей.

Вопрос: как построить приложение meteor без ненужных файлов npm, оставив только те, которые фактически используются приложением во время выполнения?

Update: На метеора 1.4.1_3 если создать простой проект meteor create dummy-project и пройти через все общие вещи, как npm meteor install и meteor npm prune --production и им сделать узелок из него с meteor build c:\dummy --directory вы получите папку с теми же 7К файлов и почти 2k папок (кстати, он не будет запускать node main.js из коробки, как вы могли бы ожидать). Если вы перебираете папки, вы можете найти встроенный компилятор babel, который занимает ~ 3,5 тыс. Файлов.

Зачем нужен компилятор babel внутри скомпилированного приложения?

+0

Что вы подразумеваете под ненужными файлами npm? Если вы не используете пакет, удалите его. – jmugz3

+0

Я имею в виду, что пакеты npm - это не только 1 (или некоторые) файлы js + 1 (или некоторые) html/css-файлы, но они содержат много файлов, необходимых для сборки этих зависимостей пакета и пакета внутри. I.e .: angular2-color-picker имеет размер 30 МБ с 2100 файлами внутри: есть еще один node_modules внутри с собственным угловым пакетом! – Ujin

+0

Другой пример: d3js: пакет npm равен 1,78 МБ с 309 файлами - d3.min.js - это только один размер файла 150 КБ. – Ujin

ответ

-1

Чтобы получить интроспективная ваших пакетов,

npm list --depth 0 

, чтобы увидеть текущие пакеты в проекте только на одном уровне.

Проверьте этот список и решите, не нужен ли вам пакет и удалите его.

Вы также можете использовать другие флаги, такие как

npm list --depth 1 #the number represents the max depth 
npm list --long true #for more information about the packages 
npm list --global true #to check your global packages. 
npm help-search <searchTerm> 

Надеется, что поможет вам получить более глубокое представление в ваших пакетах. help-search Link

Вы можете видеть, что несколько пакетов зависят от того же пакета, а затем зависит от вас, чтобы решить, какое приложение необходимо выполнить успешно.

Edit 1

Вы можете исключить пакеты внутри вашего devDependencies, так что, когда вы публикуете/развертывания кода у вас есть более чистый пакет.

Вы делаете это, используя npm prune --production, - который удаляет все ваши devDependencies и потребует от ваших пользователей сделать npm install для работы вашего пакета. Для информации here

+0

Я могу ясно видеть свои пакеты первого уровня в файле package.json моего проекта. Смотрите мой комментарий к оригиналу. – Ujin

+0

Как я уже сказал, вы будете повторять зависимости, и вам решать, что использовать, или просто проще реализовать себя. – jmugz3

+0

Спасибо, что упомянул опцию «чернослив». Я alredy делаю упаковку для электрона с включенной опцией чернослива. По-прежнему не удаётся сократить количество файлов и их размер. – Ujin

Смежные вопросы