magento2: Grunt watch does not work on preprocessed files

This is a follow up to #1619 - the error was not fully fixed there. You can see it in the code of the patch: Only if the file was not changed trough preprocessing, a symlink is created. If it was, still a copy is created and grunt watches the wrong files for changes.

Preconditions

  1. Magento 2.1.0
  2. Theme with preprocessed file, for example a custom Magento_Theme/module.less contains //@magento_import ‘module/_collapsible_navigation.less’;

Steps to reproduce

  1. Execute grunt watch
  2. Change the above module.less
  3. grunt watch does not detect the change
  4. ls reveals: in pub/static there is a (modified) copy of the file, not a symlink. grunt watch -v reveals, only pub/static but not app is watched.

Expected result

  1. Grunt should watch all file changes

Actual result

  1. Grunt does not watch changes to all files, because some files are not symlinks

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Reactions: 11
  • Comments: 21 (9 by maintainers)

Most upvoted comments

@amenk, thank you for reporting the issue, the internal ticket is created MAGETWO-69571.

It has been 4 months, any update on this from the Magento team?

@amenk, thank you for reporting this issue. I reproduced your issue. Here is the output:

Running "watch" task
Waiting...
Verifying property watch exists in config...OK
Verifying property watch.blank.files exists in config...OK
Verifying property watch.luma.files exists in config...OK
Verifying property watch.backend.files exists in config...OK
Verifying property watch.setup.files exists in config...OK
Verifying property watch.updater.files exists in config...OK
Verifying property watch.reload.files exists in config...OK
Live reload server started on *:35729
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/_setup.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/_messages.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/_navigation-bar.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/_progress-bars.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/_tooltips.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/tooltips for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/tooltips/_password-strength.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/components/tooltips/_tooltips.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_buttons.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_classes.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_collector.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_extends.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_forms.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_icons.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_lists.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_structures.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_utilities.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/_variables.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/utilities for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_checkbox-radio.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_forms.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_legends.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_multiselects.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_selects.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/forms/_validation.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/utilities/_animations.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/utilities/_grid-framework.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/utilities/_grid.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/lib/utilities/_vendor-prefixes.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_common.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_customize-your-store.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_install.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_landing.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_license.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_readiness-check.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/setup/styles/less/pages/_web-configuration.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_data-grid.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_header.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_menu.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_modals.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_navigation-bar_extend.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/components/_page-inner.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/pages/_common.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/pages/_extension-manager.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/pages/_home.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/pages/_login.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_extends.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_forms.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_lists.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_structure.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_typography.less for changes.
Watching app/design/adminhtml/Magento/backend/web/app/updater/styles/less/source/_variables.less for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/css/styles-old.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/css/styles.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/extjs/resources/css/ext-all.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/extjs/resources/css/ytheme-magento.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/jquery/colorpicker/css/colorpicker.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/jquery/fileUploader/css/jquery.fileupload-ui.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/jquery/jstree/themes/default/style.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_Braintree/styles.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_ConfigurableProduct/product/product.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_Paypal/styles.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_Paypal/js for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_ProductVideo/css/gallery-delete-tooltip.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_Swatches/css/swatches.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/Magento_Weee/styles.css for changes.
Watching pub/static/adminhtml/Magento/backend/en_US/prototype/windows/themes/default.css for changes.

I do not see any app/design/frontend/* so it is still the issue.

Hi, I had the same problem here, grunt watch was not “seing” my changes / uploads. It was working great until I updated to Magento 2.2.0.

I weirdly had to remove @import url('https://fonts.googleapis.com/css?family=Roboto:100,300,300i,400,400i,500,500i,700,700i,900,900i'); from my CSS.