首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导入npm包

导入npm包
EN

Stack Overflow用户
提问于 2018-05-29 05:53:37
回答 1查看 177关注 0票数 0

如何导入npm包?如果我只是添加lodash捆绑从6毫秒到900毫秒!?有没有办法缓存静态依赖关系?如果我将lodash添加到rollup.config.js中的externalglobalscustomResolveOptions中,它将从捆绑包中排除。但是,例如,我如何将其添加到libs.js文件中呢?

以下是我的文件:

app.js

代码语言:javascript
复制
import _ from 'lodash'

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

rollup.config.js

代码语言:javascript
复制
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()
    ]
};

package.json

代码语言:javascript
复制
{
  "devDependencies": {
    "npm-run-all": "^4.1.2",
    "rollup": "^0.55.5",
    "rollup-plugin-commonjs": "^8.0.2",
    "rollup-plugin-node-resolve": "^3.0.0",
    "rollup-plugin-uglify": "^3.0.0",
    "babel-core": "^6.26.3",
    "babel-plugin-external-helpers": "^6.22.0",
    "babel-preset-env": "^1.7.0",
    "rollup-plugin-babel": "^3.0.4"
  },
  "dependencies": {
    "lodash": "^4.17.10"
  },
  "scripts": {
    "build": "rollup -c",
    "watch": "rollup -c -w",
    "dev": "npm-run-all --parallel watch"
  },
  ...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 06:20:19

您可以手动分离"libs“和源代码的入口点,以加快构建速度:

rollup.config.js

代码语言:javascript
复制
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

代码语言:javascript
复制
export { default as _ } from 'lodash'

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50573797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档