Я искал Rollupjs, специально для его функции удаления мертвого кода.
В моем примере я создал надуманный пример ниже:
Источник:
const opts = {
method: 'GET',
url: 'https://www.google.com',
secure: true
}
const fs = require('fs')
let token
if (opts.secure) {
token = 'secret_token'
}
if (opts.method === 'GET') {
if (token) {
fs.readFileSync(['will get', opts.url, 'with token', token])
} else {
fs.readFileSync(['will get', opts.url])
}
} else if (opts.method === 'POST') {
console.log('will post', opts.url)
} else if (opts.method === 'PUT') {
console.log('will put', opts.url)
} else if (opts.method === 'DELETE') {
console.log('will delete', opts.url)
}
Результат:
'use strict';
const opts = {
method: 'GET',
url: 'https://www.google.com',
secure: true
};
const fs = require('fs');
let token;
{
token = 'secret_token';
}
{
if (token) {
fs.readFileSync(['will get', opts.url, 'with token', token]);
} else {
fs.readFileSync(['will get', opts.url]);
}
}
Как видно, в результате вокруг блока token = 'secret_token'
.
* есть блок.1017 * Также это не устраняет мертвый код вокруг блока
if (token) {
.
Однако, если вы удалите условие вокруг оператора if и просто установите токен, например let token = 'secret_token
, вы получите более близкий результат.Хотя вы все еще получаете вложенные ненужные блоки.
{
{
fs.readFileSync(['will get', opts.url, 'with token', token]);
}
}
Я полагаю, что я могу сделать некоторую хакерскую попытку удалить ненужные блоки, используя esprima.Но у меня есть два вопроса.
Есть ли способ в Rollup удалить эти ненужные блоки кода.Фигурные скобки.
Есть ли способ довести определяющую переменную до допустимого значения.
Изменение IE:
let a = 1
до:
let a
{
a = 1
}
Демо: https://rollupjs.org/repl?version=0.66.6&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmNvbnN0JTIwb3B0cyUyMCUzRCUyMCU3QiU1Q24lMjAlMjBtZXRob2QlM0ElMjAnR0VUJyUyQyU1Q24lMjAlMjB1cmwlM0ElMjAnaHR0cHMlM0ElMkYlMkZ3d3cuZ29vZ2xlLmNvbSclMkMlNUNuJTIwJTIwc2VjdXJlJTNBJTIwdHJ1ZSU1Q24lN0QlNUNuJTVDbmNvbnN0JTIwZnMlMjAlM0QlMjByZXF1aXJlKCdmcycpJTVDbiU1Q25sZXQlMjB0b2tlbiU1Q25pZiUyMChvcHRzLnNlY3VyZSklMjAlN0IlNUNuJTIwJTIwdG9rZW4lMjAlM0QlMjAnc2VjcmV0X3Rva2VuJyU1Q24lN0QlNUNuJTVDbmlmJTIwKG9wdHMubWV0aG9kJTIwJTNEJTNEJTNEJTIwJ0dFVCcpJTIwJTdCJTVDbiUyMCUyMGlmJTIwKHRva2VuKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBmcy5yZWFkRmlsZVN5bmMoJTVCJ3dpbGwlMjBnZXQnJTJDJTIwb3B0cy51cmwlMkMlMjAnd2l0aCUyMHRva2VuJyUyQyUyMHRva2VuJTVEKSU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGZzLnJlYWRGaWxlU3luYyglNUInd2lsbCUyMGdldCclMkMlMjBvcHRzLnVybCU1RCklNUNuJTIwJTIwJTdEJTVDbiU3RCUyMGVsc2UlMjBpZiUyMChvcHRzLm1ldGhvZCUyMCUzRCUzRCUzRCUyMCdQT1NUJyklMjAlN0IlNUNuJTIwJTIwY29uc29sZS5sb2coJ3dpbGwlMjBwb3N0JyUyQyUyMG9wdHMudXJsKSU1Q24lN0QlMjBlbHNlJTIwaWYlMjAob3B0cy5tZXRob2QlMjAlM0QlM0QlM0QlMjAnUFVUJyklMjAlN0IlNUNuJTIwJTIwY29uc29sZS5sb2coJ3dpbGwlMjBwdXQnJTJDJTIwb3B0cy51cmwpJTVDbiU3RCUyMGVsc2UlMjBpZiUyMChvcHRzLm1ldGhvZCUyMCUzRCUzRCUzRCUyMCdERUxFVEUnKSUyMCU3QiU1Q24lMjAlMjBjb25zb2xlLmxvZygnd2lsbCUyMGRlbGV0ZSclMkMlMjBvcHRzLnVybCklNUNuJTdEJTVDbiUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJjanMlMjIlMkMlMjJuYW1lJTIyJTNBJTIybXlCdW5kbGUlMjIlMkMlMjJhbWQlMjIlM0ElN0IlMjJpZCUyMiUzQSUyMiUyMiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE