【问题标题】:Rollup full file path for node_modules or bundle each external module in separate dir汇总 node_modules 的完整文件路径或将每个外部模块捆绑在单独的目录中
【发布时间】:2021-10-22 09:36:45
【问题描述】:

我正在尝试使用这个测试 js 文件,我想通过 Rollup 为浏览器编译测试 ES 模块。

import { v4 as uuidv4 } from 'uuid';

export default function () {
    console.log(uuidv4());
}

我为这个package.json做了npm i

{
  "dependencies": {
    "uuid": "^8.3.2"
  },
  "devDependencies": {
    "@rollup/plugin-node-resolve": "^13.0.4"
  }
}

rollup.config.js

// rollup.config.js

import nodeResolve from '@rollup/plugin-node-resolve';

export default {
    input: ['src/main.js'],
    output: {
        name: 'bundle',
        dir: 'dst',
        format: 'es'
    },
    external: ['uuid'],
    plugins: [ nodeResolve({ browser: true }) ]
};

汇总工作后我得到:

import { v4 } from 'uuid';

function main () {
    console.log(v4());
}

export { main as default };

#1

我可以使用我的前缀获取 node_modules js 文件的完整路径吗?

例如对于我想要的 lib uuid (node_modules/uuid/dist/esm-browser/index.js):

// for prefix '/assets/js/lib/'
import { v4 } from '/assets/js/lib/uuid/dist/esm-browser/index.js';

或者可能只是 node_modules 库文件路径:

import { v4 } from 'node_modules/uuid/dist/esm-browser/index.js';

#2

我可以在 单独的目录 中为由我的 js 代码导入的每个外部 模块(来自包 json)制作 es-bundle 吗?

【问题讨论】:

    标签: javascript import bundle node-modules rollup


    【解决方案1】:
    1. external 部分中删除模块。
    2. 使用preserveModules: true - docs

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 2018-01-24
      • 2017-07-29
      • 2017-03-23
      • 2020-08-21
      • 2021-04-13
      • 2016-11-20
      • 2019-11-25
      • 2022-10-26
      相关资源
      最近更新 更多