Symfony4.2 Сборник активов - PullRequest
       23

Symfony4.2 Сборник активов

0 голосов
/ 12 января 2019

У меня есть приложение, которое использует Symfony4.2, но начало с 4.0, а затем 4.1.

Похоже, что сборник активов изменился в 4.2, теперь есть {{ encore_entry_link_tags('app') }} или entrypoints.json и runtime.js.

Или эти 2 последних файла должны быть там.

Конечно, я установил webpack-encore-bundle + пакет npm / yarn, как это ссылка .

Но когда я компилирую с yarn encore dev или ./node_modules/.bin/encore dev, эти файлы не находятся в моей папке build.

Итак, у меня есть исключения, использующие encore_entry_link_tags:

An exception has been thrown during the rendering of a template ("Could not find the entrypoints file from Webpack: the file "/path/to/.../public/build/entrypoints.json" does not exist.").

Я использую fomantic-ui в качестве библиотеки веб-интерфейса, и она, кажется, не работает с пряжей (yarn install raise some exceptions), поэтому, возможно, все пакеты не установлены?

Я попытался npm install вместо yarn install, но, кажется, что-то не хватает, у меня до сих пор нет этих entrypoint.json и runtime.js файлов.

Для информации вот мой webpackConfig

// webpack.config.js
let Encore = require('@symfony/webpack-encore');

Encore
// the project directory where all compiled assets will be stored
    .setOutputPath('public/build/')

    // the public path used by the web server to access the previous directory
    .setPublicPath((!Encore.isProduction()) ? '/rapp/build' : '/build')

    // this is now needed so that your manifest.json keys are still `build/foo.js`
    // i.e. you won't need to change anything in your Symfony app
    .setManifestKeyPrefix('build')

    // will create public/build/main.js and public/build/main.css
    .addEntry('main', './assets/js/main.js')
    //Add entry if other js/css needed. first parameter is the generated filename.
    //require scss file in js. (if you addEntry for scss file only, it will create a js file with same name)
    .addEntry('reader', './assets/js/reader.js')

    //file upload with dropzone
    .addEntry('dropzone', './assets/js/dropzone.js')

    //Admin chapter js
    .addEntry('admin-chapter', './assets/js/chapter.js')

    .addEntry('admin-unfollow', './assets/js/backend/unfollow.js')

    //addStyleEntry : for css file only
    .addStyleEntry('public', './assets/css/public.scss')

    // allow sass/scss files to be processed
    .enableSassLoader()

    // allow legacy applications to use $/jQuery as a global variable
    .autoProvidejQuery()

    .enableSourceMaps(!Encore.isProduction())

    // empty the outputPath dir before each build
    .cleanupOutputBeforeBuild()

// create hashed filenames (e.g. app.abc123.css)
    .enableVersioning()

    .createSharedEntry('vendor', [
        'jquery',
    ])

    .autoProvideVariables({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery',
    })

    /*.copyFiles({
        from: './assets/img',
        // optional target path, relative to the output dir
        //to: 'images/[path][name].[ext]',

        // if versioning is enabled, add the file hash too
        to: 'images/[path][name].[hash:8].[ext]',

        // only copy files matching this pattern
        pattern: /\.(png|jpg|jpeg|gif|ico|svg|webp)$/
    })*/

    .configureFilenames({
        images: '[path][name].[hash:8].[ext]'
    })
;

// export the final configuration
module.exports = Encore.getWebpackConfig();

В webpackConfig методы copyFiles также вызывают исключение: Error: Encore.copyFiles is not a recognized property or method.

Я не знаю, полностью ли я что-то напутал, обновив symfony4.1 и установив encore js и комплект, но кажется, что новые ресурсы Symfony довольно повреждены.

РЕДАКТИРОВАТЬ:

Я выполнил шаги здесь и теперь у меня есть исключение, препятствующее любой компиляции.

"./node_modules/.bin/encore" dev Running webpack ...

D:\PhpStormProjects\bookuto\node_modules\webpack-cli\bin\cli.js:235
                                throw err;
                                ^

TypeError: Cannot destructure property `createHash` of 'undefined' or 'null'.
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\mini-css-extract-plugin\dist\index.js:26:44)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\mini-css-extract-plugin\dist\cjs.js:3:18)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\@symfony\webpack-encore\lib\loaders\css-extract.js:12:30)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\@symfony\webpack-encore\lib\config-generator.js:12:30)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)

yarn encore dev делает ту же ошибку.

1 Ответ

0 голосов
/ 12 января 2019

Мне удалось это исправить!

Для людей, имеющих «старое» приложение Symfony, позаботьтесь о

  • обновить версию веб-пакета следующим образом: "webpack": "^4.28.4"

При компиляции webpackEncore выдается предупреждение: WARNING Webpack is already provided by Webpack Encore, also adding it to your package.json file may cause issues. но, в моем случае, я удаляю веб-пакет из моего package.json, он перестал работать полностью, говоря: «веб-пакет не найден» или что-то подобное

  • обновить ваш "@symfony/webpack-encore", по крайней мере, "^0.21.0"

  • Если у вас нет symfony-flex, добавьте следующие файлы конфигурации

assets.yaml

framework:
    assets:
        json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

webpack_encore.yaml

webpack_encore:
    # The path where Encore is building the assets.
    # This should match Encore.setOutputPath() in webpack.config.js.
    output_path: '%kernel.project_dir%/public/build'

А у тебя bundles.php

Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
  • обновите "sass-loader" до "^7.0.1" как минимум (рекомендуется, если у вас установлена ​​более ранняя версия, это вызовет опасения по поводу определенных функций в конфигурационном файле webpack.)

Надеюсь, я что-то не пропустил и что это может помочь другим людям.

...