Я пытаюсь создать пакет из нескольких классов из моего кода проекта Angular с помощью веб-пакета.Мне нужны только классы, и вообще не нужен декоратор.
Конечный результат пакета очень велик, поскольку декоратор классов имеет много зависимостей для загрузки.
например, main-bundler.ts
import { MyPipe } from 'some-location.pipe';
(<any>self).utils.MyPipe = MyPipe;
some-location.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ // <--- not needed and bloats the bundle
name: 'my-pipe'
})
export class MyPipe implements PipeTransform {
transform(value: any, args?: any): any {
return 'transformed value';
}
}
Если я решу закомментировать канал, размер файла будет уменьшен с 30632 строк до 133 строккода, который определенно экономит много.Можно ли как-нибудь настроить конфигурацию моего веб-пакета, чтобы игнорировать декораторы и их зависимости в моем угловом проекте?
my-webpack.config.js
const path = require('path');
const webpack = require('webpack');
const ROOT = path.resolve(__dirname, '../../src');
const DESTINATION = path.resolve(__dirname, '../../dist');
module.exports = {
mode: 'development',
context: ROOT,
entry: {
main: './main-bundler.ts',
},
output: {
filename: '[name].js',
path: __dirname + '/dist'
},
resolve: {
extensions: ['.ts', '.js'],
modules: [
ROOT,
'node_modules'
]
},
module: {
rules: [
/****************
* PRE-LOADERS
*****************/
{
enforce: 'pre',
test: /\.js$/,
use: 'source-map-loader'
},
{
enforce: 'pre',
test: /\.ts$/,
exclude: /node_modules/,
use: 'tslint-loader'
},
/****************
* LOADERS
*****************/
{
test: /\.ts$/,
exclude: [/node_modules/],
use: 'awesome-typescript-loader'
},
]
},
devtool: 'cheap-module-source-map',
devServer: {}
};