Treeshaking webpack 4 не применяется из-за @ babel / preset-typcript - PullRequest
0 голосов
/ 20 декабря 2018

Я использую машинопись и babel 7 в своем реактивном проекте (я удаляю tsloader из-за того, что babel 7 теперь поддерживает TS)

"@babel/preset-typescript": "^7.1.0",

Проблема в том, что treehaking не работает, когда я использую этот пресет.Мой вавилонский конфиг

{
  "presets": [
    ["@babel/preset-env", {"modules": false}],
    "@babel/preset-react",
    "@babel/typescript"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread",
    "react-hot-loader/babel"
  ]
}

Кто-нибудь знает, как это исправить и почему?Большое спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

У меня все работает с моей конфигурацией, можете ли вы попробовать:

tsconfig.json:

{
"compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "target": "esnext",
    "moduleResolution": "node",
    "jsx": "react",
    "pretty": true,
    "noEmit": true,
    "strict": true,
    "isolatedModules": true,
    "esModuleInterop": true
},
"include": ["./src/**/*"]

}

.babelrc

{
"presets": [
    "@babel/react",
    "@babel/typescript",
    [
        "@babel/env",
        { 
            "modules": false,
            "targets": { "browsers": "last 2 versions" }
        }
    ]
],
"plugins": [
    [
        "babel-plugin-styled-components", 
        {
            "pure": true
        }
    ],
    "@babel/proposal-class-properties",
    "@babel/proposal-object-rest-spread"
]

}

и webpack.config.js:

rules: [
            {
                test: /\.tsx?$/,
                exclude: /node_modules/,
                use: [
                    {
                        loader: 'babel-loader',
                        options: {
                            cacheDirectory: true,
                        },
                    }
                ]
            },
        ],

С этими конфигами я могу расшатывать как обычный мертвый код, так и стилизованные компоненты (это былонемного краски, чтобы начать работать, обратите внимание на настройки плагина!)

Конверт:

node 8.10
"webpack": "^4.28.4",
"typescript": "^3.3.3",
"babel-loader": "^8.0.5",
"babel-plugin-styled-components": "^1.10.0",
"@babel/core": "^7.2.2",
"@babel/plugin-proposal-class-properties": "^7.3.0",
"@babel/polyfill": "^7.2.5",
"@babel/preset-env": "^7.2.3",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.1.0",
...