Как скомпилировать файл ts в js в Angular и сделать его доступным в корне при обслуживании?

Мне нужен мой файл firebase-messaging-sw.ts, скомпилированный в firebase-messaging-sw.js, чтобы он был доступен из корня.

Я уже создал firebase-messaging-sw.ts в папке src. Но это не работает. Я также добавил файл .js в angular.json.

Итак, я хочу сделать файл ts и скомпилировать его в js. Но я не знаю, как это сделать в Angular.

угловой.json

"assets": [
              "src/favicon.ico",
              "src/assets",
              "src/firebase-messaging-sw.js"

Вы хотите написать файл TS или использовать существующий файл JS? Вы не очень ясно...

user4676340 10.04.2019 11:50

Я отредактирую свой пост, я хочу написать файл TS и использовать скомпилированный файл js

Raymond the Developer 10.04.2019 11:52

Если вы напишете файл TS и правильно подключите его, полученный файл JS будет автоматически импортирован в ваш пакет. Вам не нужно никаких дополнительных шагов.

user4676340 10.04.2019 11:53

Мне не нужно, чтобы он был в комплекте, мне нужно, чтобы он был отдельным js, доступным, как этот test.org/firebase-messaging-sw.js

Raymond the Developer 10.04.2019 11:57

Если это отдельно, то это не может быть TS. Если он отдельный, он не будет проходить процесс сборки, а это означает, что это должен быть JS.

user4676340 10.04.2019 12:02

Что значит, это не может быть ТС? Я хочу написать /a.ts compile в /a.js и сделать его доступным при обслуживании. Мне просто нужно знать, как настроить tsconfig или angular.json

Raymond the Developer 10.04.2019 12:57

Затем вы импортируете свой a.ts в свой main.ts, чтобы он был связан. Затем у вас есть доступ ко всем его переменным в ваших компонентах, либо путем их импорта, либо путем ссылки на созданную им переменную.

user4676340 10.04.2019 12:59

Нет, ты не понимаешь. Чтобы обмен сообщениями firebase работал. Браузеру требуется отдельный файл js в корне с именем firebase-messaging-sw.js. Это должно быть конкретное имя файла и в корне.

Raymond the Developer 10.04.2019 13:04

Затем создайте файл JS, а не файл TS, и добавьте его в массив angular.json вашего scripts, в правильный. Я понял вашу проблему, я отвечаю на нее уже 2 часа. Просто ты, похоже, не слушаешь и не понимаешь, что я говорю.

user4676340 10.04.2019 13:11

Мне нужно использовать переменные среды из angular, поэтому мне нужно, чтобы t было ts. Так что я не думаю, что вы понимаете проблему.

Raymond the Developer 10.04.2019 16:55

Вы можете открыть переменные среды, чтобы использовать их. И, конечно, если вы не заявите о своей цели, я не могу понять вопроса. Ты не рассказываешь всего, откуда мы должны знать? Догадка ? Как экстрасенсы? Но опять же, я не понимаю, почему вы должны создавать файл js «в корне», как этот, библиотеки должны абстрагировать эти концепции, чтобы вам не приходилось делать именно то, что вы пытаетесь сделать. Мне кажется проблема XY.

user4676340 10.04.2019 17:28

Ты все еще не до конца понимаешь. Этот файл ТРЕБУЕТСЯ находиться в корне для работы firebase. Это стандарт для всех основных браузеров, таких как Chrome Safari и т. д. Я ценю ваше время, но это то, что есть. Я не устанавливаю правила.

Raymond the Developer 10.04.2019 19:00

Не могли бы вы дать мне ссылку на вашу библиотеку?

user4676340 10.04.2019 19:05

Вот руководство firebase.google.com/docs/cloud-messaging/js/получить

Raymond the Developer 10.04.2019 19:50

Спасибо, буду разбираться!

user4676340 10.04.2019 20:28

Спасибо и тебе мужик!

Raymond the Developer 11.04.2019 18:34
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
16
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы всегда можете использовать

tsc myfile.ts

чтобы скомпилировать отдельный файл .ts в отдельный файл .js, который не имеет ничего общего с вашим проектом Angular.

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

Терминал

tsc myfile.ts && ng build myproject

Или добавьте его в package.json

"scripts":{
   "build" : "tsc myfile.ts && ng build myproject"
}

npm run build

Это работает, но можно ли настроить это в файле tsconfig?

Raymond the Developer 10.04.2019 17:00

tsconfig предоставляет больше возможностей для компиляции в js, но вам все равно нужен tsc. Но также возможно добавить этот процесс в файл веб-пакета Angular как совершенно отдельный шаг.

Kokodoko 10.04.2019 17:15

К сожалению, это не очень хорошее решение, когда создаваемый ts-файл зависит от переменных environments.ts. Правильный dev/prod environments.ts создается после запуска tsc.

denkan 29.02.2020 14:47

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