Как включить пользовательские файлы в сборку angular-cli?
RE: Angular2 2.0.0, angular-cli v1.0.0-beta.11-webpack.8
Как я могу сказать angular-cli, чтобы включить файл из " src / assets "в корень" dist " при его сборке?
мы развертываем на хосте Windows и должны включить "web.config " файл, чтобы сказать IIS, чтобы направить все в индекс. Мы делали это до RC4, но со всеми обновлениями он провалился через трещины (я не помню, как мы это сделали).
я просматривала GitHub РЕПО документы и не нашли ничего полезного в отношении этой темы. Может быть, я не в том месте?
на ToC, есть маркер "добавление дополнительных файлов в сборку", но похоже, что раздел не существует.
4 ответов:
свойство "активы" angular-cli.json можно настроить для включения пользовательских файлов в сборку angular-cli webpack. Итак, настройте значение свойства "активы" как массив. Например:
"assets": ["assets", "config.json",".htaccess"],выше конфигурация будет копировать конфигурацию.и он jsn .htaccess в папку dist во время сборки angular-cli webpack. выше настройки работали в angular-cli версии 1.0.0-beta.18
Текущий Правильный Ответ:
команда добавила поддержку копирования определенных файлов как есть в выходную папку (
distпо умолчанию) в более поздней версии Angular CLI (будет бета 17 или 19 - это было в final 1.х релизов на века).вы просто добавляете его в массив в
angular-cli.jsonкак:{ ... "apps" [ { "root": "src", "assets": [ "assets", "web.config" ], ... } ] ... }(обратите внимание, что путь относительно )
я лично использую его и он работает просто отлично.
по состоянию на бета 24, у меня есть добавлена функция к угловому CLI, который гарантирует, что всеassetsфайлы и папки подаются с сервера webpack dev при запускеng testне толькоng serve.он также поддерживает обслуживание файлов активов на сервере webpack dev, используемом для модульных тестов (
ng test).
(в случае, если вам нужны некоторые файлы JSON для тестов, или просто ненавижу видеть 404 предупреждения в консоли).
Они уже подаются изng e2eпотому что он работает полныйng serve.и он также имеет более продвинутые функции, такие как фильтрация файлов, которые вы хотите из папки, и наличие имени выходной папки отличается от исходной папки:
{ ... "apps" [ { "root": "src", "assets": [ "assets", "web.config", { // Copy contents in this folder "input": "../", // That matches this wildcard "glob": "*.config", // And put them in this folder under `dist` ('.' means put it in `dist` directly) "output": "." } ], ... } ] ... }.
.
[только для архивирования] оригинальный ответ (6 октября 2016 г.):
это не поддерживается в настоящее время, к сожалению (по состоянию на бета-16). Я поднял точный вопрос к команде (web.конфигурационные файлы), но это, кажется, не происходит в ближайшее время (если вы не разветвляете CLI и т. д.).
соблюдать этот вопрос для полного обсуждения и возможных будущих деталей.
С. П.для файла JSON вы можете поместить его в
./src/assets/. Эта папка копируется как есть в./dist/assets/. Это текущее поведение.раньше в systemJS days был еще один
./public/папка, которая была скопирована в./dist/напрямую, но это ушло в версиях Webpack, который обсуждается проблема, упомянутая выше.
одним из решений (хотя на мой взгляд это немного Хак) является объявление переменной в вашем
main.tsфайл, который требует дополнительного файла, который вы хотите включить в вывод сборки webpack.пример:
import './polyfills.ts'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { enableProdMode } from '@angular/core'; import { environment } from './environments/environment'; import { AppModule } from './app/'; /* HACK: Include standalone web.config file manually in webpack build * * Due to the way the beta angular-cli abstracts the webpack config files into * angular-cli.json and lacks current documentation we were unable to find * a way to include additional files manually in the webpack build output. * * For hosting on IIS we need to include a web.config file for * specifying rewrite rules to make IIS compatible with the Angular Router. * The one liner following this comment is a hack to accomplish this * and should be reviewed and corrected as soon as adequete documentation * is available for the angular-cli configuration file. */ const webConfig = require('file?name=[name].[ext]!./web.config'); if (environment.production) { enableProdMode(); } platformBrowserDynamic().bootstrapModule(AppModule);когда webpack встречает этот оператор объявления переменной в
main.tsон будет излучать rawweb.configфайл как часть вывода сборки:Asset Size Chunks Chunk Names inline.map 5.59 kB 2 [emitted] inline web.config 684 bytes [emitted] styles.bundle.js 16.7 kB 1, 2 [emitted] styles inline.js 5.53 kB 2 [emitted] inline main.map 5.36 MB 0, 2 [emitted] main styles.map 22.6 kB 1, 2 [emitted] styles main.bundle.js 4.85 MB 0, 2 [emitted] main index.html 1.98 kB [emitted] assets/.npmignore 0 bytes [emitted] assets/styles/global.css 2.74 kB [emitted] Child html-webpack-plugin for "index.html": Asset Size Chunks Chunk Names index.html 4.45 kB 0 webpack: bundle is now VALID.идеальное решение было бы в конфигурации webpack, но я не могу сделать головы или хвосты, как угловой-CLI заключается в том, что через
angular-cli.jsonпока (бета.16).поэтому, если у кого-то есть лучший ответ, который расширяет конфигурацию webpack для проекта, созданного angular-cli, я бы хотел его услышать.
в angular-cli есть раздел "скрипты".файл json. Вы можете добавить туда все сторонние файлы javascript.
Comments