Использование TypeScript, Browserify и SVG.js

Прежде всего: я совершенно новичок в Node.js, поэтому, пожалуйста, потерпите меня, если это глупый вопрос.

Я пытаюсь заставить browserify и tsify работать с TypeScript и библиотекой SVG.js. Насколько я понимаю, я должен уметь

  1. Напишите код TypeScript, использующий библиотеку SVG.js.
  2. Скомпилируйте этот код в vanilla JS и свяжите его вместе с самой библиотекой для использования в браузере с помощью browserify и tsify.

Шаг 1 прост, но шаг 2 вызывает у меня проблемы. Даже если я напишу простейшую программу на TypeScript, содержащую только строку import * as SVGJS from 'svg.js', а затем запущу команду, указанную в tsifyдокументы (browserify main.ts -p [ tsify --noImplicitAny ] > bundle.js), скомпилированный bundle.js файл будет иметь следующее содержимое:

Использование TypeScript, Browserify и SVG.js Здесь я ожидал увидеть код всей библиотеки SVG.js. По крайней мере, это то, что я получу, если создам ванильный JS-файл, содержащий var SVGJS = require('svg.js'), и запущу browserify на это.

Может ли кто-нибудь сказать мне, что я делаю неправильно? Я установил все необходимые модули узла и не получаю предупреждений или ошибок во время компиляции. Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию.

Делает ли Browserify Treeshaking? Если это так, он не будет включать svg lib в комплект, если вы его не используете.

Fuzzyma 01.04.2019 11:14

@Fuzzyma Я так не думаю. Если я дополню свою программу несколькими строками кода, использующими импортированную библиотеку SVG.js, я получу тот же результат в моем файле bundle.js (за исключением добавленных дополнительных строк).

wstr 01.04.2019 13:26

Хм, я никогда не использовал браузер и поэтому больше не могу с этим помочь. Однако вы можете попробовать использовать новую версию 3.0.12, которая написана с учетом esm. Может это поможет

Fuzzyma 01.04.2019 13:30

@Fuzzyma Большое спасибо за вашу помощь! Я обновился до 3.0.12, но теперь компилятор TypeScript выдает следующую ошибку: node_modules/@svgdotjs/svg.js/svg.js.d.ts:296:18 - error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later. Если я запускаю команду tsc main.ts --lib es2015, я получаю кучу новых ошибок (точнее, 118).

wstr 01.04.2019 14:12

Я знаю, что это работает, потому что я проверил этот бит. Все дело в библиотеках, которые вам нужно включить. К сожалению больше не знаю. Вам нужен диск es6 и вам нужен Дом. Где-то в документах написано, какие либы доступны

Fuzzyma 01.04.2019 15:04
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
1
5
301
0

Другие вопросы по теме