我应该如何导入npm包?如果我只是添加lodash捆绑从6ms到900ms!?
有没有办法缓存静态依赖项?
如果我将lodash添加到HAVING bool_and( (tag LIKE '%o%')::int);
中的external
,globals
和customResolveOptions
,则会将其从捆绑中排除。但是我怎么能把它添加到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()
]
};
答案 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软件包,这将很难维护。