Свернуть в режиме просмотра часов с двумя версиями накопления - PullRequest
0 голосов
/ 27 марта 2020

У меня странная проблема в последнее время. Когда я запускаю rollup -cw, Rollup связывает мое приложение с Rollup v2.2.0. Все в порядке.

rollup v2.2.0
bundles ./src/index.html → build...
[Browsersync] Access URLs:
 ----------------------------------
       Local: http://localhost:8000
    External: http://10.0.0.13:8000
 ----------------------------------
          UI: http://localhost:3001
 UI External: http://localhost:3001
 ----------------------------------
[Browsersync] Serving files from: build
[Browsersync] Watching files...
(!) Circular dependencies
src/apollo/client.js -> src/apollo/resolvers/index.js -> src/apollo/resolvers/Query.js -> src/router/router.js -> src/apollo/auth.js -> src/apollo/client.js
node_modules/d3-selection/src/selection/index.js -> node_modules/d3-selection/src/selection/select.js -> node_modules/d3-selection/src/selection/index.js
node_modules/d3-selection/src/selection/index.js -> node_modules/d3-selection/src/selection/selectAll.js -> node_modules/d3-selection/src/selection/index.js
...and 17 more
(!) Generated an empty chunk
index
created build in 30.8s

[2020-03-26 23:42:30] waiting for changes...
[Browsersync] Reloading Browsers...
[Browsersync] Reloading Browsers... (buffered 302 events)

Но если я впоследствии сохраню файл, накопительный пакет свяжет приложение с накопительным пакетом v1.31.1

rollup v1.31.1
bundles ./src/index.html → build, build/nomodule...
bundles ./src/index.html → build, build/nomodule...
bundles ./src/index.html → build, build/nomodule...
bundles ./src/index.html → build...
[!] (plugin copy) Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'
Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'

[!] (plugin copy) Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'
Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'

[!] (plugin copy) Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'
Error: EEXIST: file already exists, mkdir 'build/assets/systemjs/dist'

[!] (plugin Rollup Core) Error: Could not load /path/to/the-app/node_modules/@material/mwc-fab/node_modules/@material/mwc-ripple/ripple-directive.js (imported by /path/to/the-app/node_modules/@material/mwc-fab/mwc-fab-base.js): ENOENT: no such file or directory, open '/path/to/the-app/node_modules/@material/mwc-fab/node_modules/@material/mwc-ripple/ripple-directive.js'
Error: Could not load /path/to/the-app/node_modules/@material/mwc-fab/node_modules/@material/mwc-ripple/ripple-directive.js (imported by /path/to/the-app/node_modules/@material/mwc-fab/mwc-fab-base.js): ENOENT: no such file or directory, open '/path/to/the-app/node_modules/@material/mwc-fab/node_modules/@material/mwc-ripple/ripple-directive.js'

(!) Circular dependencies
src/apollo/client.js -> src/apollo/resolvers/index.js -> src/apollo/resolvers/Query.js -> src/router/router.js -> src/apollo/auth.js -> src/apollo/client.js
node_modules/d3-selection/src/selection/index.js -> node_modules/d3-selection/src/selection/select.js -> node_modules/d3-selection/src/selection/index.js
node_modules/d3-selection/src/selection/index.js -> node_modules/d3-selection/src/selection/selectAll.js -> node_modules/d3-selection/src/selection/index.js
...and 17 more
(!) Generated an empty chunk
index
created build in 31s

[2020-03-26 23:44:09] waiting for changes...
[Browsersync] Reloading Browsers...

Обратите внимание, что эта вторая сборка также создает рабочая версия (nomodule)

У меня не установлен накопительный пакет v1.31.1 в этом репо

AFAICT У меня нет пакетов, требующих накопительный пакет v1.31.1

> npm ls rollup
the-app@0.1.0 /path/to/the-app
├─┬ @open-wc/demoing-storybook@1.13.8
│ └── rollup@1.32.1
├── UNMET PEER DEPENDENCY rollup@2.2.0
└─┬ rollup-plugin-workbox@5.0.1
  └─┬ workbox-build@5.0.0
    └── rollup@1.32.1

npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-alias@3.0.1
npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-beep@0.1.2
npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-commonjs@11.0.2
npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-json@4.0.2
npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-node-resolve@7.1.1
npm ERR! peer dep missing: rollup@^1.20.0, required by @rollup/plugin-replace@2.3.1
npm ERR! peer dep missing: rollup@^0.65.2 || ^1.0.0, required by rollup-plugin-minify-html-literals@1.2.3
npm ERR! peer dep missing: rollup@^1.4.1, required by rollup-plugin-notify@1.1.0

У меня не установлен накопительный пакет глобально, после запуска yarn global remove rollup и npm r -g rollup

Вот мой rollup.config. js

import dotenv from 'dotenv';
import path from 'path';

import alias from '@rollup/plugin-alias';
import beep from '@rollup/plugin-beep';
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import replace from '@rollup/plugin-replace';
import resolve from '@rollup/plugin-node-resolve';

import { generateSW } from 'rollup-plugin-workbox';
import { terser } from 'rollup-plugin-terser';
import babel from 'rollup-plugin-babel';
import browsersync from 'rollup-plugin-browsersync';
import copy from 'rollup-plugin-copy';
import graphql from '@kocal/rollup-plugin-graphql';
import html from '@open-wc/rollup-plugin-html';
import litcss from 'rollup-plugin-lit-css';
import minifyLitHtml from 'rollup-plugin-minify-html-literals';
import notify from 'rollup-plugin-notify';
import watchAssets from 'rollup-plugin-watch-assets';

dotenv.config();

const PROCESS_WATCHING =
  !!(process.argv.some(arg => !!arg.match(/-c?w/)) || process.argv.includes('--watch'));

const production = !PROCESS_WATCHING && process.env.NODE_ENV === 'production';

const replaceConfig = {
  ...redacted
};

const targets = [
  { src: 'node_modules/systemjs/dist', dest: 'build/assets/systemjs' },
  { src: 'node_modules/@webcomponents', dest: 'build/assets' },
  { src: 'src/favicon.ico', dest: 'build' },
  { src: 'src/favicon.ico', dest: 'build' },
  { src: 'src/manifest.webmanifest', dest: 'build' },
  { src: 'src/assets', dest: 'build' },
  { src: 'src/components/shared.css', dest: 'build' },
  { src: 'src/index.html', dest: 'build' },
  { src: 'src/*.css', dest: 'build' },
];

const customResolver = resolve({
  extensions: ['.js', '.json', '.html', '.graphql', '.css'],
  dedupe: id => id.includes('lit'),
});

const entries = [{
  find: /#(.*)\/(.*)\b/,
  replacement: path.resolve(__dirname, 'src/$1/$2'),
}, {
  find: /#(.*)\b/,
  replacement: path.resolve(__dirname, 'src/$1'),
}];

const esmOutput = {
  format: 'esm',
  dir: 'build',
  sourcemap: true,
};

const nomoduleOutput = {
  format: 'system',
  dir: 'build/nomodule',
  sourcemap: true,
};

const productionOutput = [esmOutput, nomoduleOutput].map(output => ({
  ...output,
  plugins: [
    terser(),
    minifyLitHtml(),
    generateSW(require('./workbox-config.js')),
  ],
}));

export default {
  input: './src/index.html',
  output: production ? productionOutput : esmOutput,
  watch: {
    include: 'src/**',
    clearScreen: false,
  },
  plugins: [
    html({ minify: production }),
    babel(),
    graphql(),
    json(),
    litcss({ uglify: production }),
    customResolver,
    alias({ entries, customResolver }),
    replace(replaceConfig),
    commonjs({ sourceMap: false }),
    copy({ targets, copyOnce: PROCESS_WATCHING }),
    ...PROCESS_WATCHING ? [
      watchAssets({ assets: ['src/**/*.html', 'src/**/*.css'] }),
      browsersync({
        port: 8000,
        server: 'build',
        single: true,
        watch: true,
        watchOptions: {
          awaitWriteFinish: {
            ignoreInitial: true,
            stabilityThreshold: 2000,
            pollInterval: 100,
            ignore: '/assets/**/*',
          },
        },
      }),
    ] : [],
    beep(),
    notify(),
  ],
  // Don't warn about `this` - typescript produces these.
  onwarn(warning, warn) {
    if (warning.code === 'THIS_IS_UNDEFINED') return;
    warn(warning);
  },

};

То, что я пробовал

  • Я пробовал понизить до свертки 1.32
  • Я пробовал npm dedupe rollup
  • Я пробовал yarn global remove rollup
  • I Я пробовал rm -rf node_modules ; rm package-lock.json ; npm i
  • Я пытался закомментировать эти плагины:
    • watchAssets
    • browsersyn c
    • copy
    • beep
    • notify
    • html
  • Я пытался добавить этот плагин:
{
  name: 'sanity-check',
  buildStart() {
    if (production) console.log('HEY!!!! IT\'S PRODUCTION');
  },
},

Журналы не появились

Без кубиков.

Что является причиной этого d Поведение с двойной сборкой, и откуда берется накопительный пакет 1.31.1?

Обновление

Подстройка узловых модулей для 1.31.1 привела к этому результату

$ rg "1\.31\.1" node_modules/@surma
node_modules/@surma/rollup-plugin-off-main-thread/package.json
55:    "rollup": "1.31.1"
$ npx npm-why @surma/rollup-plugin-off-main-thread
npx: installed 4 in 1.141s
  Who required @surma/rollup-plugin-off-main-thread:
  my-pwa > rollup-plugin-workbox > workbox-build > @surma/rollup-plugin-off-main-thread@1.2.0

Так что, возможно, эта ошибка вызвано тем, что @surma/rollup-plugin-off-main-thread закрепляет накопительный пакет до указанной c версии.

Я не понимаю, как это позволяет npm ссылаться на две накопительные корзины

...