导入npm包

时间:2018-05-28 21:53:37

标签: rollupjs

我应该如何导入npm包?如果我只是添加lodash捆绑从6ms到900ms!? 有没有办法缓存静态依赖项? 如果我将lodash添加到HAVING bool_and( (tag LIKE '%o%')::int); 中的externalglobalscustomResolveOptions,则会将其从捆绑中排除。但是我怎么能把它添加到rollup.config.js文件中呢?

以下是我的文件:

app.js

libs.js

rollup.config.js

import _ from 'lodash'

alert(_.concat(["hi", "hello"]))

的package.json

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
import babel from 'rollup-plugin-babel';

const production = !process.env.ROLLUP_WATCH;

export default {
    input: 'src/index.js',
    output: {
        file: 'scripts/bundle.js',
        format: 'iife',
        sourcemap: true
    },
    plugins: [
        resolve(),
        commonjs(),
        babel({
          exclude: 'node_modules/**'
        }),
        production && uglify()
    ]
};

1 个答案:

答案 0 :(得分:1)

您可以手动分隔" libs"的入口点。和源代码,以加快您的构建:

<强> rollup.config.js

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
import babel from 'rollup-plugin-babel';

const production = !process.env.ROLLUP_WATCH;

export default [{
    input: 'src/index.js',
    output: {
        file: 'scripts/bundle.js',
        format: 'iife',
        sourcemap: true,
        globals: {
            'lodash': '_',
        },
    },
    external: ['lodash'],
    plugins: [
        babel(),
        production && uglify()
    ]
}, {
    input: 'src/common.js',
    output: {
        file: 'scripts/common.js',
        format: 'umd',
        name: 'window',
        extend: true,
        sourcemap: true
    },
    plugins: [
        resolve(),
        commonjs(),
        production && uglify()
    ]
}];

<强> common.js

export { default as _ } from 'lodash'

它确实增加了使用库维护common.js文件的开销。就个人而言,我发现它可以最好地控制文件大小和编译时间。如果你经常安装并包含新的npm软件包,这将很难维护。