@tether_toolkit/config
v1.1.0
Published
This is a special package for creating and modifying configurations for tether-toolkit project.
Downloads
6
Maintainers
Readme
@tether_toolkit/config
Это специальный пакет для создания и модификации конфигурации.
Установка
Если вы создаете конфигурацию для своего проекта вручную, то установите пакет, создайте файл webpack.config.ts и выберите один из следующих вариантов.
npm install @tether_toolkit/config
Обзор API
Базовая конфигурация
В большинстве случаев, для проекта достаточно базовой конфигурации, ее можно сгенерировать следующим образом:
import { createConfig } from '@tether_toolkit/config';
export default createConfig(__dirname);
Расширение базовой конфигурации
В некоторых ситуациях, вам может понадобиться точечно изменить конфигурацию, для этого можно использовать утилиту merge из пакета конфигурации:
import { createConfig, merge } from '@tether_toolkit/config';
export default merge(createConfig(__dirname), {
mode: 'development',
});
Кастомная конфигурация
Если вам нужна полностью своя конфигурация, вы можете использовать функцию satisfies из TypeScript, чтобы иметь поддержку типов.
import webpack from 'webpack';
export default {
mode: 'production'
} satisfies webpack.Configuration
Пример базовой конфигурации
createConfig
создаст конфигурацию с поддержкой встроенных модулей и переменных окружения, если вы создаете конфигурацию вручную, то используйте методы getExternals
и getEnvVariables
из пакета config, чтобы добавить их поддержку в свою конфигурацию.
export const createConfig = (basePath: string): webpack.Configuration => ({
entry: getEntryPoint(basePath),
output: getOutput(basePath),
mode: 'production',
module: {
rules: [
{
test: /\.([cm]?ts|tsx)$/,
loader: 'babel-loader',
},
],
},
resolve: {
alias: {
'@modules': path.resolve(basePath, 'esp-libs'),
'~': path.resolve(basePath, 'src'),
},
extensions: ['.ts', '.js', '.tsx'],
},
externals: getExternals(BUILT_IN_MODULES),
plugins: [
new webpack.DefinePlugin(getEnvVariables(path.resolve(basePath, '.env'))),
],
target: ['node', 'es5'],
})