标签: webpack-encore

Symfony Webpack Encore,将多个JS / CSS文件转换为一个文件

我想从多个css / js文件创建一个css / js文件。多个addEntry无法正常工作,请检查我的代码并提供解决方案。

var Encore = require('@symfony/webpack-encore');

Encore
        // the project directory where compiled assets will be stored
        .setOutputPath('web/build/')
        // the public path used by the web server to access the previous directory
        .setPublicPath('/build')
        .cleanupOutputBeforeBuild()
        .enableSourceMaps(!Encore.isProduction())
        // uncomment to create hashed filenames (e.g. app.abc123.css)
        .enableVersioning(Encore.isProduction())
        // uncomment for legacy applications that require $/jQuery as a global variable
        //.autoProvidejQuery()
        // uncomment to define the assets of the project
        .addEntry('js/app', './assets/js/app.js')
        .addEntry('js/uploader', './assets/js/uploader.js')
        .addStyleEntry('css/icons', './assets/css/icons.scss')
        .addStyleEntry('css/app', './assets/css/app.scss')
        .addStyleEntry('css/uploader', './assets/css/uploader.scss')

        // …
Run Code Online (Sandbox Code Playgroud)

symfony webpack-encore

5
推荐指数
2
解决办法
3522
查看次数

Symfony 4 & encore 自动刷新不起作用,我总是必须手动重新加载浏览器

从一个新的 Symfony 4 项目中,当我运行这个命令时:

./node_modules/.bin/encore dev-server --hot
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后我修改了一个 scss 文件(通过示例更改 body 标签背景颜色),shell 做出反应

在此处输入图片说明

但是我的浏览器不会自动刷新!我总是必须手动重新加载页面以查看最新的 css 更改。我可以在哪里做一个 mystake?

谢谢 !

=> 我用不同的浏览器测试过 => 如果我修改自定义 javascript 文件,浏览器会自动刷新!相反,当我更改 scss 文件时

=> 我的资产目录结构:

在此处输入图片说明

=> 我的 webpack.config.js 内容:

var Encore = require('@symfony/webpack-encore');

Encore
    // directory where compiled assets will be stored
    .setOutputPath('public/build/')
    // public path used by the web server to access the output path
    .setPublicPath('/build')
    // only needed for CDN's or sub-directory deploy
    //.setManifestKeyPrefix('build/')

    /*
     * ENTRY CONFIG
     *
     * Add 1 entry for …
Run Code Online (Sandbox Code Playgroud)

css symfony webpack-dev-server webpack-encore symfony4

5
推荐指数
1
解决办法
3501
查看次数

Symfony 4 / Webpack Encore:jQuery不起作用

jQuery不起作用,我无法使用引导下拉菜单,自定义javascript ...

经过npm run dev(或npm run build),app.js文件以及创建并加载在浏览器中。

编译完成,没有任何错误。

我试图使.autoProvidejQuery()npm run dev/ npm run build,但没有任何变化。

我正在使用Symfony 4.1.6

找到解决方案

webpack.config.js中将 .enableSingleRuntimeChunk()更改为.disableSingleRuntimeChunk()

如果仅在该行上注释,则可以运行,但是在运行npm run dev或时收到警告消息npm run build

package.json

"devDependencies": {
    "@symfony/webpack-encore": "^0.22.0",
    "bootstrap": "^4.2.1",
    "jquery": "^3.3.1",
    "popper.js": "^1.14.6",
    "webpack-notifier": "^1.6.0"
},
"license": "UNLICENSED",
"private": true,
"scripts": {
    "dev-server": "encore dev-server",
    "dev": "encore dev",
    "watch": "encore dev --watch",
    "build": "encore production --progress"
},
"dependencies": {
    "node-sass": "^4.11.0", …
Run Code Online (Sandbox Code Playgroud)

symfony webpack webpack-encore symfony4

5
推荐指数
2
解决办法
2562
查看次数

使用Webpack Encore在Angular Datatables中找不到DataTable

我已经从升级Symfony的应用程序3.44.2.2,一切都很好,但我不能让数据表经纱功能安装和使用的WebPack安可角的DataTable.

我是如何设置它的

纱线安装:

yarn add jquery@2.1.4
yarn add angular@1.4.8
yarn add datatables.net@1.10.19
yarn add datatables.net-dt@1.10.11
yarn add angular-datatables@0.6.2
Run Code Online (Sandbox Code Playgroud)

将这些文件app.js与jQuery一起添加到我的Webpack中:

var $ = require('jquery');
require('datatables.net');
require('datatables.net-dt');
require('angular');
require('angular-datatables');
Run Code Online (Sandbox Code Playgroud)

包含app.js在我的Webpack配置文件中:

var Encore = require('@symfony/webpack-encore');

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')

    .addEntry('app', './assets/js/app.js')

    .enableSingleRuntimeChunk()
    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())
    .autoProvidejQuery()
;

module.exports = Encore.getWebpackConfig();
Run Code Online (Sandbox Code Playgroud)

并通过以下方式将上述内容包含在我的前端模板中:

{{ encore_entry_script_tags('app') }}
Run Code Online (Sandbox Code Playgroud)

错误

以上结果导致以下Javascript错误,似乎表明DataTables API无法访问.

Uncaught TypeError: Cannot read property 'Api' of undefined
at initAngularDataTables (angular-datatables.js:478)
at Object.invoke (angular.js:4523)
Run Code Online (Sandbox Code Playgroud)


/* …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs webpack webpack-encore symfony4

5
推荐指数
1
解决办法
381
查看次数

使用 WebPack Encore 和 Symfony 4 在 TWIG 页面上使用功能 Javascript

我使用的是 Symfony 4.2,我使用的是最后一个 WebPack Encore。

我有问题,因为我需要在我的树枝模板上使用我的 javascript 中的函数,但这永远行不通。

我总是有同样的问题:

未捕获的 ReferenceError:consoleText 未在 (index):17 处定义

资产/js/app.js:

require('../css/app.css');
const $ = require('jquery');
global.$ = global.jQuery = $;
Run Code Online (Sandbox Code Playgroud)

资产/js/myFunctions.js

const consoleText = function (log = "Auncun log") {
console.log(log);
};

module.exports = {
    consoleText: consoleText
};
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

var Encore = require('@symfony/webpack-encore');

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .addEntry('app', './assets/js/app.js')
    .enableSingleRuntimeChunk()
    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .autoProvidejQuery()
;

module.exports = Encore.getWebpackConfig();
Run Code Online (Sandbox Code Playgroud)

我需要在我的文件之外访问我的函数 consoleText()。

如果我想访问 javascript 文件,这个工作。示例:在我的 app.js 中,我可以添加:

let myTest = require('./myFunctions');
myTest.consoleText('Blablabla');
Run Code Online (Sandbox Code Playgroud)

编译后可以正常工作。

但是我需要在我的树枝模板(home.html.twig)上访问这个功能

在我的 base.html.twig 中,我使用以下命令调用了我的脚本文件:

{% …
Run Code Online (Sandbox Code Playgroud)

javascript symfony twig webpack-encore symfony4

5
推荐指数
2
解决办法
3945
查看次数

Symfony 4 - Webpack Encore bootstrap css 不在输出中

我正在尝试将 Webpack Encore 引入我的 Symfony 4 应用程序以管理 JS 和 CSS 资产。

我安装yarnnodejs

然后composer require encore然后yarn install

我有app.js文件在assets/js/.

/*
 * Welcome to your app's main JavaScript file!
 *
 * We recommend including the built version of this JavaScript file
 * (and its CSS file) in your base layout (base.html.twig).
 */

// any CSS you require will output into a single css file (app.css in this case)
require('bootstrap');
require('../css/app.css');

// …
Run Code Online (Sandbox Code Playgroud)

symfony webpack yarnpkg webpack-encore webpack-4

5
推荐指数
2
解决办法
5073
查看次数

未使用Symfony Webpack Encore定义的DataTables API

我正在将Webpack Encore与Symfony 3.4一起使用(迁移到Symfony 4的一部分)

我有使用jQuery的数据表(通过NPM安装到node_modules),但是返回了以下api功能.columns.column is not a function at

套件版本

  • jQuery的 2.14.4
  • 数据表 1.10.19
  • Webpack Encore 0.27.0

Webpack app.js

global.$ = global.jQuery = require('jquery');
require('bootstrap');
global.moment = require('moment');
require('datatables.net-dt');
$.fn.dataTable = $.fn.DataTable = global.DataTable = require('datatables.net');
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

var Encore = require('@symfony/webpack-encore');

Encore
// directory where compiled assets will be stored
    .setOutputPath('code/web/build/')
    // public path used by the web server to access the output path
    .setPublicPath('/build')
    // only needed for …
Run Code Online (Sandbox Code Playgroud)

javascript datatables symfony webpack webpack-encore

5
推荐指数
2
解决办法
580
查看次数

无法将Vuetify项目更新为vuetify 2.0.0-beta5

从升级vuetify LTS到时遇到问题vuetify 2.0.0-beta.5

在一切顺利之前,从app.scss加载了vuetify样式

错误:

[Vue警告]:监视程序“ isDark”的getter错误:“ TypeError:无法读取未定义的属性'dark'

TypeError:无法读取未定义的属性“ dark”

[Vue警告]:渲染错误:“ TypeError:无法读取未定义的属性'dark'”

我已经卸载了vuetify,然后将其安装并更新为测试版,例如/sf/answers/3447563871/

package.json

{
  "devDependencies": {
    "@fortawesome/fontawesome-free": "^5.9.0",
    "@mdi/font": "^3.7.95",
    "@symfony/webpack-encore": "^0.22.0",
    "axios": "^0.19.0",
    "chart.js": "^2.8.0",
    "less": "^3.9.0",
    "less-loader": "^4.1.0",
    "material-design-icons-iconfont": "^5.0.1",
    "node-sass": "^4.11.0",
    "sass-loader": "^7.1.0",
    "vue": "^2.6.8",
    "vue-loader": "^15.7.0",
    "vue-template-compiler": "^2.6.8",
    "webpack-dev-server": "^3.2.1",
    "webpack-notifier": "^1.6.0"
  },
  "license": "UNLICENSED",
  "private": true,
  "scripts": {
    "dev-server": "encore dev-server --hot --disable-host-check --host 174.28.1.5 --public 174.28.1.5:8080",
    "dev": "encore dev",
    "watch": "encore dev --watch",
    "build": "encore production --progress"
  }, …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuetify.js webpack-encore

5
推荐指数
1
解决办法
1394
查看次数

在带有 encore 的 symfony 项目中,如何设置 Jest?

我有一个与 webpack-encore 和 babel 一起使用的 symfony 5 项目

一开始,我在 webpack.config.js 中激活了 babel :

.configureBabelPresetEnv((config) => {
    config.useBuiltIns = 'usage';
    config.corejs = 3;
})
Run Code Online (Sandbox Code Playgroud)

在通过 encore dump 生成的配置后,我似乎来制作这个 babel.config.js 文件:

module.exports = {
  'presets': [
    [
      '@babel/preset-env',
      {
        'modules': 'auto', # this line was set to false, which made the whole thing bug
        'targets': {
          node: 'current',
        },
        'useBuiltIns': 'usage',
        'corejs': 3,
      },
    ],
    '@babel/react',
  ],
  'plugins': [
    '@babel/plugin-syntax-dynamic-import',
  ],
};
Run Code Online (Sandbox Code Playgroud)

在尝试了每个选项后,我尝试在没有 babel 配置文件的情况下启动 Jest,但将

.configureBabelPresetEnv((config) => {
    config.modules = 'auto'; …
Run Code Online (Sandbox Code Playgroud)

symfony jestjs babeljs webpack-encore

5
推荐指数
1
解决办法
622
查看次数

再次出现 webpack 问题,因为 datepicker() 不是函数

jquery-ui Datepicker 小部件无法与 Encore webpack 一起使用,因为它不是一个函数:

TypeError: $(...).datepicker is not a function
Run Code Online (Sandbox Code Playgroud)

这是我的 app.js:

global.$ = global.jQuery = $;
require('jquery-ui');
require('popper.js');
require('bootstrap');
require('bootstrap-table');
require('select2');
require('../lib/jquery-switchbutton/jquery.switchButton.js');
require('./bootstrap3-typeahead.min.js');
Run Code Online (Sandbox Code Playgroud)

和 webpack 配置:

var Encore = require('@symfony/webpack-encore');
var path = require('path');

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .addEntry('app', './assets/js/app.js')
    .splitEntryChunks()
    .enableSingleRuntimeChunk()
    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())
    .autoProvideVariables({
        $: "jquery",
        jQuery: "jquery",
        Popper: ['popper.js', 'default']
    });

var config = Encore.getWebpackConfig();
config.resolve.alias = {
    jquery: path.join(__dirname, 'node_modules/jquery/dist/jquery')
};
module.exports = config;
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?谢谢!

jquery jquery-ui datepicker webpack webpack-encore

4
推荐指数
1
解决办法
1434
查看次数