Skip to content

Commit

Permalink
fix(*): provided default value for clientPolyfillsEntry when no arui-…
Browse files Browse the repository at this point in the history
…feather is installed
  • Loading branch information
Sergey Sokolov committed Dec 5, 2018
1 parent ae2e2c1 commit 623593e
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 39 deletions.
49 changes: 24 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ yarn add arui-scripts --dev
или
```bash
npm install arui-scripts --save-dev
```
```

2. Создайте необходимые файлы
- `src/index.{js,jsx,ts,tsx}` - входная точка для клиентского приложения.
Expand Down Expand Up @@ -48,33 +48,33 @@ npm install arui-scripts --save-dev

Доступные настройки:

- `dockerRegistry` - адрес используемого docker registry, по-умолчанию `''`, то есть используется публичный registry
- `baseDockerImage` - имя базового образа, используемого для построения docker образа. По-умолчанию `heymdall/alpine-node-nginx:8.9.1`.
- `serverEntry` - точка входа для исходников сервера, по-умолчанию `src/server/index`.
- `serverOutput` - имя файла для компиляции сервера, по-умолчанию `server.js`.
- `clientPolyfillsEntry` - точка входа для полифилов. Будет подключаться до основной точки входа. По-умолчанию `node_modules/arui-feather/polyfills`.
- `clientEntry` - точка входа для клиентского приложения. По-умолчанию `src/index.js`.
- `useServerHMR` - использовать ли HotModuleReplacement для сервера. По-умолчанию `false`.
- `clientServerPort` - порт WebpackDevServer и nginx итогового контейнера. По-умолчанию `8080`.
- `serverPort` - порт нодового сервера. Нужен для правильного проксирования запросов от дев сервера и nginx. По-умолчанию `3000`.
- `additionalBuildPath` - массив путей, которые попадут в архив при использовании команды `archive-build`. По-умолчанию `['config']`.
- `archiveName` - имя архива, который будет создан при использовании команды `archive-build`. По-умолчанию `build.tar`.
- `dockerRegistry` - адрес используемого docker registry, по умолчанию `''`, то есть используется публичный registry
- `baseDockerImage` - имя базового образа, используемого для построения docker образа. По умолчанию `heymdall/alpine-node-nginx:8.9.1`.
- `serverEntry` - точка входа для исходников сервера, по умолчанию `src/server/index`.
- `serverOutput` - имя файла для компиляции сервера, по умолчанию `server.js`.
- `clientPolyfillsEntry` - точка входа для полифилов. Будет подключаться до основной точки входа. По умолчанию подтягивает полифилы из `arui-feather`, если он установлен.
- `clientEntry` - точка входа для клиентского приложения. По умолчанию `src/index.js`.
- `useServerHMR` - использовать ли HotModuleReplacement для сервера. По умолчанию `false`.
- `clientServerPort` - порт WebpackDevServer и nginx итогового контейнера. По умолчанию `8080`.
- `serverPort` - порт нодового сервера. Нужен для правильного проксирования запросов от дев сервера и nginx. По умолчанию `3000`.
- `additionalBuildPath` - массив путей, которые попадут в архив при использовании команды `archive-build`. По умолчанию `['config']`.
- `archiveName` - имя архива, который будет создан при использовании команды `archive-build`. По умолчанию `build.tar`.
- `keepPropTypes` - если `true`, пакеты с prop-types не будут удалены из production билда.
- `debug` - режим отладки, в котором не выполняются некоторые нежелательные операции и выводится больше сообщений об ошибках, по-умолчанию `false`.
- `useTscLoader` - использовать ts-loader вместо babel-loader для обработки ts файлов. У babel-loader есть [ряд ограничений](https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/). По умолчанию `false`.
- `debug` - режим отладки, в котором не выполняются некоторые нежелательные операции и выводится больше сообщений об ошибках, по умолчанию `false`.
- `useTscLoader` - использовать ts-loader вместо babel-loader для обработки ts файлов. У babel-loader есть [ряд ограничений](https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/). По умолчанию `false`.

Так же, читаются настройки jest (см. [документацию](https://facebook.github.io/jest/docs/en/configuration.html))
и `proxy` (см. [документацию](https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#proxying-api-requests-in-development)).

Переопределение настроек компиляторов
---

По-умолчанию для компиляции используется только Babel, для переопределения конфига можете положить файл `.babelrc` в рут папку своего проекта.
По умолчанию для компиляции используется только Babel, для переопределения конфига можете положить файл `.babelrc` в рут папку своего проекта.
TypeScript можно включить, положив `tsconfig.json` в корень проекта.

Пути до ассетов
---
Во время компиляции продакшн версии билда будет созданно два бандла `vendor.[hash].js` и `main.[hash].js`. Для
Во время компиляции продакшн версии билда будет созданно два бандла `vendor.[hash].js` и `main.[hash].js`. Для
того, чтобы генерировать правильный html с подключением этих ассетов вы можете использовать файл `webpack-assets.json`
который будет автоматически положен в папку со скомпилированным кодом.

Expand Down Expand Up @@ -116,7 +116,7 @@ function readAssetsManifest() {
---
#### Клиент:

По-умолчанию на клиенте будет подменяться только css. Для правильной работы с react вам надо добавить примерно такой код:
По умолчанию на клиенте будет подменяться только css. Для правильной работы с react вам надо добавить примерно такой код:
```jsx harmony
import React from 'react'
import ReactDOM from 'react-dom'
Expand Down Expand Up @@ -229,7 +229,7 @@ export default server;
"preset": "arui-scripts"
}
}
```
```

docker
---
Expand All @@ -240,9 +240,9 @@ docker

Имя контейнера определяется как `{configs.dockerRegistry}/{name}:{version}`. Переменные `name` и `version` по умолчанию берутся из package.json,
но вы так же можете переопределить их из командной строки, например
`arui-scripts docker-build name=container-name version=0.1-beta`
`arui-scripts docker-build name=container-name version=0.1-beta`

Команда предполагает наличие установленных `node_modules` перед сборкой, в процессе работы же очищает дев зависимости используя `yarn` или `npm`.
Команда предполагает наличие установленных `node_modules` перед сборкой, в процессе работы же очищает дев зависимости используя `yarn` или `npm`.
yarn будет использоваться когда в рутовой папке проекта есть `yarn.lock` и `yarn` доступен в системе.

Итоговый контейнер будет содержать `nginx` и скрипт для запуска `nginx` одновременно с `nodejs` сервером.
Expand All @@ -262,7 +262,7 @@ archive

Этот вариант может быть полезен если вы хотите деплоить ваше приложение через подключение архива в марафоне.

Команда предполагает наличие установленных `node_modules` перед сборкой, в процессе работы же очищает дев зависимости используя `yarn` или `npm`.
Команда предполагает наличие установленных `node_modules` перед сборкой, в процессе работы же очищает дев зависимости используя `yarn` или `npm`.
yarn будет использоваться когда в рутовой папке проекта есть `yarn.lock` и `yarn` доступен в системе.

Итоговый архив будет содержать в себе `.build`, `node_modules`, `package.json` и `config` папки вашего проекта.
Expand Down Expand Up @@ -303,7 +303,7 @@ yarn будет использоваться когда в рутовой пап
}
```

По-умолчанию TS будет компилироваться через babel, но у этого естьряд ограничений:
По умолчанию TS будет компилироваться через babel, но у этого естьряд ограничений:
- нельзя использовать namespace
- Нельзя использовать устаревший синтаксис import/export (`import foo = require(...)`, `export = foo`)
- enum merging
Expand Down Expand Up @@ -353,15 +353,15 @@ require не js файлов в node_modules в node.js
require node.js на таких местах ломается. Поэтому наши внутренние библиотеки компонентов все же вкомпиливаются
в итоговый бандл сервера. Это сделанно с помощью [добавления их в исключение](https://github.com/alfa-laboratory/arui-scripts/blob/master/configs/webpack.server.dev.js#L51)
плагина [webpack-node-externals](https://www.npmjs.com/package/webpack-node-externals).
В случае, если вам необходима обработка не-js файлов из других внешних модулей - вы можете
В случае, если вам необходима обработка не-js файлов из других внешних модулей - вы можете
воспользоваться механизмом `overrides`, описанным ниже.
По умолчанию же все не-js файлы из внешних модулей будут проигнорированы.



Тонкая настройка
===
Если вам не хватает гибкости при использовании `arui-scripts`, например вы хотите добавить свой плагин для вебпака -
Если вам не хватает гибкости при использовании `arui-scripts`, например вы хотите добавить свой плагин для вебпака -
вы можете воспользоваться механизмом `overrides`.

Для этого вам необходимо создать в корне вашего проекта файл `arui-scripts.overrides.js`, из которого вы сможете управлять
Expand Down Expand Up @@ -419,4 +419,3 @@ module.exports = {
- `webpack.server.prod` - конфигурация для серверного webpack в prod режиме. Ключи: `webpack`, `webpackServer`, `webpackProd`, `webpackServerProd`.

Для некоторых конфигураций определены несколько ключей, они будут применяться в том порядке, в котором они приведены в этом файле.

27 changes: 13 additions & 14 deletions commands/util/check-required-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,20 @@ function checkFileWithExtensions(filePath, extensions) {
}

function checkRequiredFiles() {
const unavailableFiles = files
.map(filePath => {
return {
exist: checkFileWithExtensions(filePath, extensions),
path: filePath
};
})
.filter(fileInfo => !fileInfo.exist);

if (unavailableFiles.length !== 0) {
const unavailableFilePaths = files
.reduce((result, filePath) => {
if (filePath && !checkFileWithExtensions(filePath, extensions)) {
result.push(filePath);
}
return result;
}, [])

if (unavailableFilePaths.length !== 0) {
console.log(chalk.red('Could not find required files.'));
const extensionsString = extensions.join(',');
unavailableFiles.forEach(fileInfo => {
const dirName = path.dirname(fileInfo.path);
const fileName = path.basename(fileInfo.path);
unavailableFilePaths.forEach(filePath => {
const dirName = path.dirname(filePath);
const fileName = path.basename(filePath);
console.log(chalk.red(' Name: ') + chalk.cyan(`${fileName}.{${extensionsString}}`));
console.log(chalk.red(' Searched in: ') + chalk.cyan(dirName));
});
Expand All @@ -58,4 +57,4 @@ function checkRequiredFiles() {
}


module.exports = checkRequiredFiles;
module.exports = checkRequiredFiles;

0 comments on commit 623593e

Please sign in to comment.