Sapper/Svelte/Rollup 外部依赖最佳实践?

Sapper/Svelte/Rollup external dependencies best practice?

聪明人!

我是一个打包机初学者,有一个打包机斜线依赖问题。

插件默认加载为外部 rollup.config.js:

{ ..., server: { ..., external: <**package.json-dependencies-arr**> } ... }

当我在 .svelte 组件中使用它时:

import Scroller from '@sveltejs/svelte-scroller';

//...

<Scroller />

...错误打脸

备注

如果错误再次出现在另一个依赖项中,我会将其添加到 notExternals-arr。

问题

  1. 考虑到 sapper/svelte/rollup-setup,在处理导致类似错误的基于客户端的插件时,这种方法是最佳实践吗?

提前致谢!

堆栈

internal/modules/cjs/loader.js:896
  throw err;
  ^

Error: Cannot find module '@sveltejs/svelte-scroller'
Require stack:

    - /.../__sapper__/dev/server/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:893:15)
    at Function.Module._load (internal/modules/cjs/loader.js:743:27)
    at Module.require (internal/modules/cjs/loader.js:965:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/.../__sapper__/dev/server/server.js:8:16)
    at Module._compile (internal/modules/cjs/loader.js:1076:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:941:32)
    at Function.Module._load (internal/modules/cjs/loader.js:782:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/.../__sapper__/dev/server/server.js'
  ]
}

有胆就转载

模板

npx degit "sveltejs/sapper-template#rollup" <app-name>

插件

yarn add @sveltejs/svelte-scroller

将插件导入 .svelte-component

<script>
   import Scroller from '@sveltejs/svelte-scroller';
</script>

//...

<Scroller />

yarn run dev

因为@sveltejs/svelte-scroller是Svelte组件而不是JS模块,它必须在构建时由Svelte编译器处理,而不是在运行时导入。换句话说,它应该成为您的捆绑包的一部分。

传统的做法是,如果 dependencies 的内容被视为 external,则改为将包添加到 devDependencies

yarn add -D @sveltejs/svelte-scroller