Как скомпилировать мою библиотеку npm с помощью веб-пакета и какой конфигурации? - PullRequest
0 голосов
/ 22 февраля 2019

Я делаю JS, который я хочу опубликовать.Он будет использоваться как в сети, так и на узле.Я прочитал документ Webpack и использую этот следующий конфиг.Связанный и минимизированный, он производит пакет 20 КБ, который, IMHO, довольно большой для того, что он делает.Должен ли я связать его с веб-пакетом таким образом?

{
    mode: 'production',
    entry: {
        mylib: './src/mylib_browser.ts', // same for node
        "mylib.min": './src/mylib_browser.ts'
    },
    watch: true,
    target: 'web', // node for node
    devtool: 'source-map',
    externals: [nodeExternals()],
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js']
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name]_browser.js',
        libraryTarget: 'umd',
        library: 'MyLib',
        umdNamedDefine: true
    },
    plugins: [
        new UglifyJsPlugin({
            sourceMap: true,
            include: /\.min\.js$/,
        })
    ],
};

И у меня такая же конфигурация для узла.

Это правильная конфигурация для этого?Как я могу уменьшить размер?Кроме того, когда я смотрю на другой пакет npm, многие из них - просто vanilla js.Должен ли я просто позволить пользователю моего пакета npm упаковать его как обычную зависимость?

1 Ответ

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

Вы уверены, что минификация происходит?У вас UglifyJs только минимизирует уже минимизированные файлы, что кажется неправильным?

new UglifyJsPlugin({
    sourceMap: true,
    include: /\.min\.js$/, //<= remove this line
})

Кроме того, когда я смотрю на другой пакет npm, многие из них - просто vanilla js.Должен ли я просто позволить пользователю моего пакета npm упаковать его как обычную зависимость?

Если ваша библиотека будет упакована потребителями, то я буду распространять как минимизированные, так и не минимизированные источники.Это позволяет потребителям включать минимизированную библиотеку через один из CDN npm (например, unpkg ) при хакерстве (например, jsfiddle ) и не минимизируется при использовании библиотеки как части связанного приложениянапример, через веб-пакет.

Если ваша библиотека предназначена только для среды Node, то минификация обычно считается ненужной и даже обременительной, если потребитель столкнется с ошибкой в ​​вашей библиотеке и захочет ее отладить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...