Я хочу применить TerserPlugin для оптимизации к некоторому моему коду и исключить некоторые сторонние библиотеки (например, vue) из обработки Terser, но все, что я пытаюсь проверить, включить и исключить, не работает.Мой код написан на Typescript (только файлы * .ts, нет файлов .vue) и в большинстве сторонних библиотек с js на случай, если это будет важно позже.
Я пробовал это с регулярными выражениями и строками followig для тестирования, включения и исключения TerserPlugin, как и при заданных результатах:
1.) Не указано ни одно условие теста, не исключать, не включать: Terser применяется, например, локальные переменные методов заменены в моем материале и в сторонних библиотеках.Это на самом деле странно, так как test
значение по умолчанию /\.m?js(\?.*)?$/
в соответствии с https://github.com/webpack-contrib/terser-webpack-plugin, что неверно для любого файла * .ts.таким образом, мои файлы Typescript не должны обрабатываться Terser, но
2.) test: /\.ts$/i
- нет более краткого преобразования в моих файлах или библиотеках третьих сторон
3.) include: /\.ts$/i
- нет terserпреобразование в моих файлах или сторонних библиотеках
4.) include: /entities/i
- нет более грубого преобразования в моих файлах (пара находится в каталоге с именами сущностей) или сторонних библиотеках
5.) exclude: /vue/i
- Терсер применяется, например, локальные переменные методов заменяются в моем материале и в сторонних библиотеках
6.) exclude: "C:\Repositories\m2\node_modules\vue\dist\vue.esm.js"
- Терсер применяется, например, локальные переменные методов заменяются в моем материале ив сторонних библиотеках
7.) exclude: "C:/Repositories/m2/node_modules/vue/dist/vue.esm.js"
- применяется Terser, например, локальные переменные методов заменяются в моем материале, а в сторонних библиотеках
8.) exclude: path.join(__dirname, 'node_modules/vue/dist/vue.esm.js')
- Terserприменяется, например, локальные переменные методов заменяются в моем материале и в сторонних библиотеках
Это не имеет никакого смысла для меня.Все, что я вставляю, кажется неудачным, например, проверка и включение никогда не кажутся правдой, и поэтому ничего не обрабатывается и исключается, и никогда не кажется правдой, и поэтому все обрабатывается.Мне это кажется огромной ошибкой - слишком большой, чтобы я мог в это поверить.Любые идеи кто-то?
Здесь мой полный конфиг Terser в моем конфиге webpack с местом, отмеченным, где я положил выражение регулярного выражения
optimization: {
namedModules: true,
chunkIds: 'size',
moduleIds: 'hashed',
removeAvailableModules: true,
removeEmptyChunks: true,
mergeDuplicateChunks: true,
usedExports: true,
minimize: true,
minimizer: [new TerserPlugin({
- place where i put the regex test, exclude condition --
extractComments: false,
sourceMap: false,
terserOptions: {
output: {
comments: true,// to change
beautify: true,// to change
},
ecma: 6,
warnings: true,// to change
parse: {},
mangle: {
eval: true,
// mangle options
keep_classnames: false,
keep_fnames: false,
module: true,
toplevel: true,
safari10: false,
},
nameCache: null,
ie8: false,
}
})],
Моя версия TerserPlugin: "terser-webpack-plugin": "^ 1.4.1"
И если это может иметь значение, хотя я думаю, что нет, вот мой конфиг модуля webpack:
module: {
rules: [
{ test: /\.vue$/,
exclude: /node_modules/,
loader: 'vue-loader'
},
{ test: /\.ts$/,
exclude: /node_modules|vue\/src/,
loader: "ts-loader"
},
{ test: /\.woff(2)?(\?v=[0-9]+\.[0-9]+\.[0-9]+)?$/,
loader: "url-loader?limit=10000&mimetype=application/font-woff&name=[name].[ext]",
options: {
outputPath: './m2/fonts',
}
},
{ test: /\.(ttf|eot)(\?v=[0-9]+\.[0-9]+\.[0-9]+)?$/,
loader: "file-loader?name=[name].[ext]",
options: {
outputPath: './m2/fonts',
}
},
{ test:/\.sass$/,
use:['style-loader','css-loader', 'sass-loader']
},
{ test:/\.(s*)css$/,
use:['style-loader','css-loader', 'sass-loader']
},
{ test: /\.styl$/,
loader: ['style-loader', 'css-loader', 'stylus-loader']
},
{ test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
},