Three.js: рдЬреЗрдПрд╕рдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдмрдВрдбрд▓рд░ рддреАрди.рдЬреЗрдПрд╕ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЛ рдмрд╛рд░ рдмрдВрдбрд▓ рдХрд░рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рд╕рд┐рддре░ 2019  ┬╖  43рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

three/examples/jsm/.../<module> рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдмрдВрдбрд▓рд░ (рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рджреЛ рдмрд╛рд░ (рдпрд╛ рдХрдИ рдмрд╛рд░) рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' , рдмрдВрдбрд▓рд░ рдЖрдпрд╛рдд рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧрд╛ рдФрд░ OrbitControls.js рдореЗрдВ рдЖрдпрд╛рдд ../../../build/three.module.js ред рд╣рд╛рд▓рд╛рдВрдХрд┐, (рдмрд╛рд╣рд░реА) рдмрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ ../../../build/three.module.js рд╡рд╣реА рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ three ред

рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдмрд╛рд╣рд░реА рд╕рдВрдХреБрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЖрдпрд╛рдд рдХреЗ рдЗрд▓рд╛рдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ three рдХреЗ рдмрдЬрд╛рдп ../../../build/three.module.js ред рдпрд╣ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЛрд▓рдЕрдк рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ three рддреАрди рдХреЗ рдореБрдЦреНрдп рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ ( src/Three.js ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрджрдд рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫ рд╣реИред рдЕрдм рдЬрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВред

BTW I рдиреЗ рддреАрдиjsfundamentals рдХреЛ рд╕рднреА esm рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП

рд╕рднреА 43 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

(рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛)

рдореИрдВ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк рдХреА рддрд░рд╣ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

https://github.com/Mugen87/three-jsm

рдпрджрд┐ рдЖрдк three рдХреЛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ:

export default {
    input: 'src/main.js',
    external: ['three'],
    output: [
        {
            format: 'umd',
            name: 'LIB',
            file: 'build/main.js'
        }
    ],
    plugins: [ resolve() ]
};

рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ three.js рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рднреА рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдпрджрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк OrbitControls рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреЗрд╡рд▓ main.js рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред

рдЖрдк OrbitControls import рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рджреЛрдмрд╛рд░рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди 'three' рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ)ред

рдпрд╣ #17220 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ - рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ main рдлрд╝реАрд▓реНрдб рдХреЛ рдореЙрдбреНрдпреВрд▓ рдмрд┐рд▓реНрдб рдкрде рдХреЗ рд╕рд╛рде package.json рдмрджрд▓рдирд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИ рдХрд┐ three рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рддреАрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдЬреЛ ../../../build/three.module.js рдХреЗ рдХрдард┐рди рд╕рдВрджрд░реНрдн рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдмрдВрдбрд▓ рдореЗрдВ OrbitControls рдХреЛрдб _and_ рддреАрдиjs рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА @adrian-delgado рдХреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдкрд░ рддреАрди рдХреА рдПрдХ рдФрд░ рдкреНрд░рддрд┐ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ред

// src/main.js
import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';

console.log(THREE, OrbitControls);

@ рдПрдбреНрд░рд┐рдпрди-рдбреЗрд▓рдЧрд╛рдбреЛ рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдореЗрдВ рдкрде рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ OrbitControls.js рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЧрдпрд╛ рд╣реИ three OrbitControls рдЕрднреА рднреА рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо рд╣реЛ рд╕рдХрддреА рдереА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ OrbitControls рдХреЛрдб рдЖрд╢реНрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреЛ рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдореЗрд░рд╛ рдорддрд▓рдм рдЗрд╕реЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдпрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди OrbitControls (рдФрд░ рддреАрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЛ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛:

export default {
    // ...

    external: p => /^three/.test(p),

    // ...
};

рдореЗрд░рд╛ рдорддрд▓рдм рдЗрд╕реЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдпрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдСрд░реНрдмрд┐рдЯрдХрдВрдЯреНрд░реЛрд▓ (рдФрд░ рддреАрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ) рдХреЛ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛:

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд░реЛрд▓рдЕрдк 'three/examples/jsm/controls/OrbitControls.js' рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рднреА рдорд╛рдиреЗрдЧрд╛ред рддреЛ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд #17220 рдмрд╣реБрдд рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдмрд╛рддрдЪреАрдд рд╢рд╛рдпрдж рд╡рд╣реАрдВ рдЬрд╛рд░реА рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдПред

рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ?

// src/main.js
import * as THREE from 'three/build/three.module.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';

console.log(THREE, OrbitControls);

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЕрдиреНрдп lib рдпрд╛ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдЬреЛ рддреАрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, "рддреАрди" рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред Package.json рдЖрдо рддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, "рдмрд┐рд▓реНрдб/рдереНрд░реА.рдореЙрдбреНрдпреВрд▓" рдПрдХ рд╡рд┐рддрд░рдг рд╡рд┐рд╡рд░рдг рд╣реИ рдЬреЛ рд▓реАрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рд╕рдВрдХрд▓реНрдк рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдирд╛рдорд╕реНрдерд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

  external: p => /^three/.test(p),

@gkjohnson рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдВрдбрд▓ рдореЗрдВ "рддреАрди" рдЙрджрд╛рд╣рд░рдг рдФрд░ OrbitControls рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЗрд╡ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ

import * as three from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.module.js';
import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js';

рддреАрди.js рдХреЛ рджреЛ рдмрд╛рд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд░ рд╕реАрдбреАрдПрди рд╕реЗ рдФрд░ рдлрд┐рд░ рддреАрдиjs.org . рд╕реЗ

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддреАрди рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 106 рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рдРрд╕реА рдХрдИ рд╕рд╛рдЗрдЯреЗрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/105/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдмрд┐рд▓реНрдбрд┐рдВрдЧ (рдмрдВрдбрд▓рд┐рдВрдЧ) рдХреЗ рдмрдЬрд╛рдп рд▓рд╛рдЗрд╡ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрд░реНрде рдореЗрдВ рд╡реЗ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рдХрд░рддреЗ рдереЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдиреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдирдП рдЙрджрд╛рд╣рд░рдг AFAIK рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдлрд┐рд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рддреАрди.js рдбрд╛рд▓реЗрдВ (рд╢рд╛рдпрдж npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рднреА рдкрдереЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдкреИрдХреЗрдЬ рдЖрдзрд╛рд░рд┐рдд рдкрде рд╣реЛрдВ (рдирд╣реАрдВ ../.././build), рдФрд░ рдЕрдВрдд рдореЗрдВ рд░реЛрд▓рдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЧреИрд░-рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрде рдмрджрд▓рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдерд╛

@mrdoob

@adrian-delgado рдХреЗ рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рддреАрди.js рдХреЛ рдПрдХ рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЛрдИ рднреА рдкреИрдХреЗрдЬ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрд┐рдд рдмрдВрдбрд▓ рдореЗрдВ three/build/three.module.js рдФрд░ three/examples/jsm/controls/OrbitControls.js рдкрд░ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреАред

@EliasHasle

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдВрдбрд▓ рдореЗрдВ "рддреАрди" рдЙрджрд╛рд╣рд░рдг рдФрд░ OrbitControls рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рдлрд┐рд░ external рдлрд╝реАрд▓реНрдб рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрдВрдбрд▓ рдореЗрдВ рддреАрди рдФрд░ рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдПрдЧреАред рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдиреЛрдб- рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди (рдЬреЛ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдкреИрдХреЗрдЬ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред рдЬреЗрд╕рди ( mainFields рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВ) рддрд╛рдХрд┐ рдХрдХреНрд╖рд╛ рддреАрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ "рддреАрди" рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред _рдЕрдЧрд░ mainFields рдХреЛ ["main", "module"] mainFields рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ package.json_ рдореЗрдВ "рдореЙрдбреНрдпреВрд▓" рдХреЗ рдмрдЬрд╛рдп "рдореБрдЦреНрдп" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рддреАрди рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдПрдВрдЧреА рдФрд░ рдЪреАрдЬреЗрдВ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреА рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ "рдореБрдЦреНрдп" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдХреЙрдордирдЬ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд░реЛрд▓рдЕрдк рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

@ рдЧреНрд░реЗрдЧрдореИрди

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдирд┐рд╖реНрдкрдХреНрд╖ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреБрдЫ рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд▓рдЧ рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рдХреЛрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рд╣реА рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдпрджрд┐ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рддреАрди рдПрдХ рд╣реА рд╣реЛрд╕реНрдЯ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рддреАрди рдХреА рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐ рд▓реЛрдб рдХреА рдЬрд╛рдПрдЧреА:

import * as three from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.module.js';
import { OrbitControls } from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/examples/jsm/controls/OrbitControls.js';

// or

import * as three from 'https://threejs.org/build/three.module.js';
import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js';

рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢рд╛рдпрдж рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛?

@ рдЧреНрд░реЗрдЧрдореИрди

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЗрд╡ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ

import * as three from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.module.js';
import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js';

рд╣рд╛рдБ... рдЙрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

рд╣рд╛рдБ... рдЙрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

рдорд╛рдирд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдпрдХреАрдирди рд╣реИ рдХрд┐ рдбреЙрдХреНрд╕ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдиреБрднрд╡рд╣реАрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЬреЗрдПрд╕рдПрдо рдЙрджрд╛рд╣рд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдмрд┐рд▓реНрдбрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рди рд╣реА рд╡реЗ рдХрд┐рд╕реА рднреА рд╕реАрдбреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИред

рдРрд╕рд╛ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрд░реЛрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХреЛ jsfiddle/codepen рдЖрджрд┐ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдкрде рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рддрдм рддрдХ рдирд╣реАрдВ рдЪрд▓реЗрдВрдЧреЗ рдЬрдм рддрдХ рдЖрдк рд╕реАрдзреЗ рддреАрди.рдЬреЗрдПрд╕ рд╕рд╛рдЗрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЯрдХрд░рд╛рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЯреВрдЯрддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред (рд╣рд╛рдБ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░ рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ https://threejs.org/examples рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рдирд╣реАрдВ рд╣реИрдВ)

@gkjohnson

import * as three from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.module.js';
import { OrbitControls } from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/examples/jsm/controls/OrbitControls.js';

рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, OrbitControls CDN рдкрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ OrbitContrls ../../../bulild/three.js рдХреЗ рдЕрдВрджрд░ рдХреЗ рд░рд╛рд╕реНрддреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ

// рдпрд╛

import * as three from 'https://threejs.org/build/three.module.js';
import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js'

рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рд░ рдмрд╛рд░ рддреАрди рдмрд╛рд░ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдЬреЗрдПрд╕ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг/рдЬреЗрдПрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕реАрдбреАрдПрди рдореЗрдВ рдзрдХреНрдХрд╛ рджреЗрдВ рдФрд░ рддреАрди рдРрд╕реЗ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддреАрди.рдореЙрдбреНрдпреВрд▓.рдЬреЗрдПрд╕ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

https://cdnjs.cloudflare.com/ajax/libs/three.js/108/build/three.module.js

build рдкрде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп рд╕реАрдбреАрдПрди рдЬреИрд╕реЗ jsdelivr рдпрд╛ unpkg ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ:

рдРрд╕рд╛ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрд░реЛрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХреЛ jsfiddle/codepen рдЖрджрд┐ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдкрде рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЪрд▓реЗрдЧрд╛ ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдм рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рддрдм рддрдХ рдирд╣реАрдВ рдЪрд▓реЗрдВрдЧреЗ рдЬрдм рддрдХ рдЖрдк рд╕реАрдзреЗ рддреАрди.js рд╕рд╛рдЗрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рднреА рдереНрд░реАрдЬреЗ рд╕рд╛рдЗрдЯ рдкрд░ рд▓рд╛рдЗрд╡ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕реАрдзреЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ ... рдпрд╣ рдХрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рддрд┐ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЙрдбреНрдпреВрд▓ рдкреГрд╖реНрда рдХреЗ

рд╕реАрдбреАрдПрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рд╕реАрдбреАрдПрди, Google рдкрд░ рдкрд╣рд▓реА рд╣рд┐рдЯ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдмрджрд▓ рди рдЬрд╛рдП)

@ рдЧреНрд░реЗрдЧрдореИрди

рдРрд╕рд╛ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрд░реЛрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХреЛ jsfiddle/codepen рдЖрджрд┐ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдкрде рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рддреБрдореНрд╣рд╛рд░реА рддрд░рдлрд╝ рд╣реВрдВред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрдВрд╕реЛрд▓ рд╕реЗ camera рдпрд╛ renderer рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ

рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо unpkg рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?

рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо unpkg рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдкреЗрдЬ рдХреЗ

рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрдВрд╕реЛрд▓ рд╕реЗ рдХреИрдорд░рд╛ рдпрд╛ рд░реЗрдВрдбрд░рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рд╛рдБ, рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕реЗ (рдпрд╛ рд╕рдорд╛рди) рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реВрдВ:

Object.assign( window, { camera, renderer, scene } );

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рджреЗрд╡ рдЙрдкрдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ?

рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдХреБрдЫ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ... рдЕрдЧрд░ рд╣рдо рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдЖрдпрд╛рдд рдирдХреНрд╢рд╛ рдкреЙрд▓реАрдлрд┐рд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдЖрдпрд╛рдд рдХреЛ 100% рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдПрдирдкреАрдПрдо рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ- рдФрд░ рдмрдВрдбрд▓рд░-рдЖрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<script defer src="es-module-shims.js"></script>
<script type="importmap-shim" src="importmap.dev.js"></script>

<!-- ... -->

<script type="module-shim">
  import { Scene, WebGLRenderer } from 'three';
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';

  // ...
</script>

рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо unpkg рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдкреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд рдЬреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ?

https://threejs.org/build/ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп ISSUE_TEMPLATE рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдФрд░ @greggman рд╢рд╛рдпрдж рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ https://cdnjs.cloudflare.com/ajax/libs/three.js/108/ рдХреЛ https://unpkg.com/[email protected]/ ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ unpkg рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рд╣рдо рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рд╛рдБ, рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕реЗ (рдпрд╛ рд╕рдорд╛рди) рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реВрдВ:

Object.assign( window, { camera, renderer, scene } );

рдЙрд╣! рд╣рд╛рд╣рд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рджреЗрд╡ рдЙрдкрдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ?

рд╣рд╛рдВ! рдореИрдВ

@ рдЧреНрд░реЗрдЧрдореИрди

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЗрд╡ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ

import * as three from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/108/three.module.js';
import { OrbitControls } from 'https://threejs.org/examples/jsm/controls/OrbitControls.js';

рд╣рд╛рдБ... рдЙрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

рддреЛ рдЖрдЬ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛... рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмреБрд░реА рдЖрджрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдЦрддреНрдо рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ three.module.js рд╕реЗ dev рдФрд░ OBJLoader рд╕реЗ master ред OBJLoader рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ three.module.js рд╕реЗ master рдЗрд╕рд▓рд┐рдП BufferGeometry рдореЗрдВ рдирдИ usage рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдереА , рдФрд░ WebGLRenderer рдиреЗ рдХрд┐рдпрд╛ рдЬрд╛рд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ usage , рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐

рдпрд╣ рдХрд╛рдлреА рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реА...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрджрдд рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫ рд╣реИред рдЕрдм рдЬрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВред

BTW I рдиреЗ рддреАрдиjsfundamentals рдХреЛ рд╕рднреА esm рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ three.module.min.js рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛ рд╡рд╣ three.min.module.js )

+1

рдореИрдВ рд╕рд┐рд░реНрдл ES6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдФрд░ рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ (рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рддреАрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрдереЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛

рд╕реБрдкрд░ рдлреИрди рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдореИрдВ рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рд╣реИред

рддреАрди.min.module.js . рдХреЗ рд▓рд┐рдП рднреА +1

# 18,239 рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдРрд╕рд╛ рдХрд░рдХреЗ рдПрдХ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдЙрд╕ рдореЗрдВ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ npm link рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ Three.js рдкрд░ред

рдореИрдВрдиреЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдереНрд░реА-рдорд┐рдирд┐рдлрд╛рдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдмрдВрдбрд▓ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рддреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рдлрд┐рд░ рддреАрди.рдЬреЗрдПрд╕ рдХреЛрдб рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдЗрд╕ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: import * as THREE from "three/build/three.module"
рдЪреАрдЬреЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рддреАрди рдХреЛ рдлрд┐рд░ рдмрдВрдбрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рддреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ import * as THREE from "three рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрдВрдбрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрдВрдбрд▓ рдореЗрдВ рддреАрди.рдЬреЗрдПрд╕ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (= рдореЗрд░реЗ рдкрд╛рд╕ рддреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рдлрд┐рд░ рддреАрди рдХрд╛ рдХреЛрдб), рдЬреЛ рдЕрдВрддрддрдГ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

@рдЪрдмреНрдм

рдореИрдВ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдмрдВрдбрд▓ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рддреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рдлрд┐рд░ рддреАрди.рдЬреЗрдПрд╕ рдХреЛрдб рд╣реИред

рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: https://github.com/mrdoob/three.js/issues/17482#issuecomment -530957570ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдмрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рддреАрди рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд▓рддреА рд╕реЗ рддреАрди рдХреЛрд░ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмрд╛рд╣рд░реА рд╣реЛрдирд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд▓реЙрд╢, рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ, рдпрд╛ рдСрд░реНрдмрд┐рдЯрдХрдВрдЯреНрд░реЛрд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░реЛрд▓рдЕрдк рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣реИ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИ ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "рддреАрди" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдмрдВрдбрд▓ рдорд┐рд▓реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ рдПрдХ рдмрдВрдбрд▓рд░ рдХреЛ npm рд▓рд┐рдВрдХ рдиреБрдХрд╕рд╛рди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдорд╛рдорд▓рд╛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдмрдВрдбрд▓рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЛрдбреИрдВрдбрдмреЙрдХреНрд╕ рдХреЗрд╕ рдирд╣реАрдВ рд╣реИред

рдмрдВрдбрд▓рд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдЙрддреНрддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╣реИ, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЬреЛрдбрд╝реЗрдВ, рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдмрдВрдбрд▓рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреВрдмрдбрд╝ рд╣реИ рдХрд┐ рдЕрдЧрд░ examples/jsm рдкреИрдХреЗрдЬ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ...

// <strong i="7">@file</strong> GLTFLoader.js

// Before
import { Mesh } from '../../build/three.module.js';

// After
import { Mesh } from 'three';

... рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдо рдПрдХ рдЬрдЯрд┐рд▓ рдмрд┐рд▓реНрдб рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд┐рдирд╛ рдереНрд░реАрдЬреЗрдПрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рднреАрддрд░ HTML рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред рдереНрд░реАрдЬреЗрдПрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЖрдпрд╛рдд рдирдХреНрд╢рд╛ рдкреЙрд▓реАрдлрд┐рд▓ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред :/

рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "рддреАрди" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдмрдВрдбрд▓ рдорд┐рд▓реЗрдВрдЧреЗ ...

рдореИрдВ рдЗрд╕рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ред рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ-рд░рд┐рд▓реЗрдЯрд┐рд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

@donmccurdy

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЭреБрдХрд╛рд╡ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг/рдЬреЗрдПрд╕рдПрдо рдкреИрдХреЗрдЬ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ... рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдпрд╣ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рд▓реЗрдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдбреБрдкреНрд▓реАрдХреЗрдЯ рдХреЛрдб рд╣реЛрдЧрд╛ рдЬреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ред рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ-рд░рд┐рд▓реЗрдЯрд┐рд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореИрдВ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ - рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдореИрдВ рд░реЛрд▓рдЕрдк рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

рдКрдкрд░ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд three рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рд░реЛрд▓рдЕрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рддреАрди.рдЬреЗрдПрд╕ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕ рдкрд░ рдХреЛрдИ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
import { stuff } from './local/src/index.js';

// library code with exports...

рдпрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рддреАрди.js рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдмрдиреЗ рд░рд╣реЗрдВ рдФрд░ рдмрдВрдбрд▓ рддреАрди рдФрд░ OrbitControls рдХреЛ рдкреАрдпрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреАрди.js рдФрд░ OrbitControls рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рджреЛ рдмрд╛рд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд▓реЛрдЧ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк external: [ 'three' ] рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛) рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ OrbitControls рдЖрдпрд╛рдд рдкрде рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк OrbitControls рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП ../../../build/three.module.js рдХреЛ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╕рд╛рде рд╣реА (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдереНрд░реА.рдЬреЗрдПрд╕ рдХреЛрд░ рдлрд╛рдЗрд▓ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреВрдЯрддреЗ рд╣реИрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЖрджрд┐ - рдЬрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ _the OrbitControls рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди._ рдпрд╣рд╛рдВ рд░реЛрд▓рдЕрдк рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЛ external: path => /^three/.test( path ) ред

рдпрд╣ рддреАрди рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИред рд░реЛрд▓рдЕрдк рдЕрдкрдиреЗ рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдХрдард┐рди/рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ 'lodash/merge' рдЖрдкрдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдореЗрдВ рдмрдВрдбрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдпрд╛рдд рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реА UI рдЖрдпрд╛рдд рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗрдЯрд┐рдВрдЧ external: ['@material-ui/core'] рдмрдВрдбрд▓ рд╕реЗ '@material-ui/core/Button' рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдЧреАред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд╣реЛрдЧрд╛ рдЬреЛ рдмрдВрдбрд▓рд░ рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рджреЛ рдорд╛рдорд▓реЗ:

(рез) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреАрдиj рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рджреЛ рдмрд╛рд░ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордпред

(реи) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреАрдиj рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреБрдЫ рез+ рдмрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдпрд╛ рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордпред


рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ (1) рдФрд░ (2) рджреЛрдиреЛрдВ рдЕрднреА рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдареЛрдХрд░ рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг (1) рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдХреЗрд▓рд╛ рд╕рд╣рд╛рдпрдХ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ (2) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд рдкрд░ /^three/.test( path ) рдЪрд╛рд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@gkjohnson рдЗрд╕ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА

рдореЗрд░реЗ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ external рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛

[
        ...Object.keys(pkg.dependencies || {}),
        ...Object.keys(pkg.peerDependencies || {}),
        ...other_stuff
      ]

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддреАрди рдХреЛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛; рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ
import from "../../../build/three.module.js"; )ред рддреЛ рдореИрдВрдиреЗ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛

external: p => {
      if ([
        ...Object.keys(pkg.dependencies || {}),
        ...Object.keys(pkg.peerDependencies || {}),
        'prop-types'
      ].indexOf(p) > -1) {
        return true;
      }
      return /^three/.test(p) ;
    }

рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛ рдореИрдВрдиреЗ package.json рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреА рд╣реИрдВ, рд╡реЗ рдмрдВрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рдзрд╛рд░рдгрд╛ рд╣реИ?

@donmccurdy

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ (1) рдФрд░ (2) рджреЛрдиреЛрдВ рдЕрднреА рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдареЛрдХрд░ рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ (2) рдмрдВрдбрд▓рд░ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣рдо рдмрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (1) рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (2) рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ (1) рдкрд░ рдареЛрдХрд░ рдЦрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЕрдкрдиреЗ рдмрдВрдбрд▓рд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЙрди рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ (рдЕрдм рддрдХ) рд╣рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ 'three/src/Three.js' , рдпрд╛ 'three/build/three.min.js' рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ (рдЬреЛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ)ред
  2. рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╕рдордп package.module рдлрд╝реАрд▓реНрдб рдХреЗ рдмрдЬрд╛рдп package.main рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмрдВрдбрд▓рд░ рдХреЛ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рддреАрди рдмрдбрд╝реА bundlers рд░реЛрд▓рдЕрдк , Webpack , рдФрд░ рдкрд╛рд░реНрд╕рд▓ рд╕рдм рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ module рд╕реЗ рдЕрдзрд┐рдХ main рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐,ред рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИред
  3. рдПрдХ рд╕рд┐рдореНрд▓рд┐рдВрдХреНрдб рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm link рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рддреАрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд░реЛрд▓рдЕрдк рдХреЗ preserveSymlinks рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)
  4. codesandbox.io рдореЗрдВ рддреАрди рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдордВрдЪ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдореБрдЦреНрдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛

рдирдВрдмрд░ 4 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдареЛрдХрд░ рдЦрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП 1 рдХрд░ рд░рд╣реЗ рд╣реИрдВред рджреВрд╕рд░реЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ рдпрд╛ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗред

@рдЪрдмреНрдм

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг import from "../../../build/three.module.js"; рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХреГрдкрдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рд╕рдордЭрд╛рдпрд╛ рд╣реИ рдЙрд╕реЗ рдкрдврд╝реЗрдВ: https://github.com/mrdoob/three.js/issues/17482#issuecomment -583694493ред /^three рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'three/examples/jsm/controls/OrbitControls.js' рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░реА рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддреАрди.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'three' рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд╣реА рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреНрдп рдЕрдЬреНрдЮрд╛рдд рдиреБрдХрд╕рд╛рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдирдВрдЧреЗ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред

@gkjohnson рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдзрд╛рдЧреЗ рдореЗрдВ рджреЛ рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рдПрдХ рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛: https://github.com/KhrosGroup/ рдХреЗрдЯреАрдПрдХреНрд╕-рд╕реЙрдлреНрдЯрд╡реЗрдпрд░/рдкреБрд▓/172/рдлрд╛рдЗрд▓реНрд╕ред рдЙрд╕ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рд╕рд╛рде, import * as THREE from 'three'; рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рдХреБрдЫ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рдЦрд╛рдпрд╛ ...
https://github.com/WICG/import-maps/issues/212#issuecomment -663564421

рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдкрд╛рд╕ рд╕рдмрдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ

import { /* stuff */ } from 'three'
import { Pass } from 'three/examples/jsm/postprocessing/Pass.js'

рдФрд░ рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд╛рд╕ рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд░ рдкрд░ рддреАрди.рдЬреЗрдПрд╕ рд╕реЗ рдЖрдпрд╛рдд рди рдХрд░рдирд╛ рдкрдбрд╝реЗ, рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝рдХрд░ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд╛рдпрд╛:

const threeModulePath = path.resolve( __dirname, 'node_modules/three/build/three.module.js' );

export default {
    /* ..... */
    external: [ 'three' ],
    output: [
        {
            /* .... */
            globals : {
                'three': 'THREE',
                [ threeModulePath ]: 'THREE',
            }
        }
    ]
};

рдЗрд╕ рддрд░рд╣, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ :

рд╕реНрдерд╛рдиреАрдп рддреАрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ) рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдордХрд╛рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

"dependencies" : {
    "three": "file:../three.js"
}

рдЦреИрд░, рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝рдХрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

const threeName = "three"; // Change with your three package name
const dependencies = require('./package.json').dependencies;
const splits = dependencies[threeName].split('file:');

const modulePath = (splits.length > 1) ?
    path.resolve(__dirname, splits[1], 'build/three.module.js'):                  // Resolve local path
    path.resolve(__dirname, 'node_modules', threeName, 'build/three.module.js');  // Resolve node_module path

const external = [
    threeName,
    modulePath,
]

const globals = {
    [threeName]: 'THREE',
    [modulePath]: 'THREE',
}

@Mcgode рдЗрд╕реЗ рдКрдкрд░ https://github.com/mrdoob/three.js/issues/17482#issuecomment -530957570 рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░реЛрд▓рдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп three.js рдХреЛ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

externals: p => /^three/.test(p),

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ Pass.js рдлрд╝рд╛рдЗрд▓ рдФрд░ рддреАрди.js рдореЙрдбреНрдпреВрд▓ рджреЛрдиреЛрдВ рдХреЛ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@gkjohnson рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ three lib рдХреЛ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ (рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдореЗрд░реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ)ред

рдореИрдВ рдПрдХ рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рддреАрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдмрдВрдбрд▓ рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛ, рд▓реЗрдХрд┐рди рддреАрди рдХреЗ рдмрд┐рдирд╛, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЬрдм рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓, рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рддреАрди рдХрд╛ рдХреЛрдб рд╣реЛрдЧрд╛ред рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

import {  } from "three";
import { Line2 } from "three/examples/jsm/lines/Line2";
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";

@Mcgode @recardinal рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рд╡рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдХреЛрдб рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛; рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЛ 'рд╕рдорд╛рдпреЛрдЬрд┐рдд' рдХрд░рдирд╛ рдерд╛ рдФрд░ рд╡рд╣ рдерд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд╣реИ рдФрд░ рддреАрди рдмрд╛рд╣рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдпрд╛рддреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдВрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рддреАрди.module.js рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

import * as THREE from 'three';
import { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader';
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';

рдореИрдВрдиреЗ рдХрд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг/рдЬреЗрдПрд╕/* рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЬреЗрдПрд╕рдПрдо рдЙрджрд╛рд╣рд░рдг рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ "рдмрд╕ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ"ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Bandit picture Bandit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

filharvey picture filharvey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

scrubs picture scrubs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jack-jun picture jack-jun  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

seep picture seep  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ