Я использую Angular 9, и у меня есть такой код:
(features.ts, autogenerated:)
// AUTO-GENERTATED FILE. DO NOT EDIT!
export const Features = {
// Whether to reveal our Secret New Feature to the world
ENABLE_SECRET_FEATURE: 1
};
(mycode.ts, app code)
import { Features } from 'generated/features.ts';
function doSomething() {
if (Features.ENABLE_SECRET_FEATURE) {
doAIBlockChainARThing();
} else {
doSomeBoringOldCRUDThing();
}
}
Я бы хотел, чтобы код был EITHER
function doSomething() {
doAIBlockChainARThing();
}
ИЛИ
function doSomething() {
doSomeBoringOldCRUDThing();
}
, но не оба.
Есть ли вызов ng build
, который бы это сделал? Я знаю, что uglify может сделать это, и Closure Compiler, безусловно, может. Мой текущий вызов: ng build --aot=true --stats-json --buildOptimizer=true --optimization=true --prod
После некоторых экспериментов я вижу, что настройки terser в Angular сборках prod делают то, что я хочу, если у меня есть такой код:
const SECRET_FEATURE = true;
if (SECRET_FEATURE) {
// code here is emitted
} else {
// code here is NOT emitted
}
Однако если я попытаюсь сделать что-то вроде:
import {SECRET_FEATURE} from 'my-features';
if (SECRET_FEATURE) { // this conditional is emitted
// this code is emitted
} else {
// this code is also emitted
}
Я думаю, мне придется использовать что-то вроде https://www.npmjs.com/package/tsickle для лучшего устранения мертвого кода вместе с пользовательской конфигурацией WebPack называть это. Я надеялся на более Angular -centri c путь только для того, чтобы мне не пришлось создавать / документировать множество нестандартных машин для будущих инженеров.