Игнорировать декораторы через Webpack? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать пакет из нескольких классов из моего кода проекта 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: {}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...