Less.js: Impor tidak diperbarui saat mengompilasi ulang melalui objek yang lebih sedikit (?)

Dibuat pada 7 Mar 2018  ·  19Komentar  ·  Sumber: less/less.js

laporan bug
Saya menulis alat kompilasi untuk proyek saya, itu tidak terlalu bergantung.

folder gaya proyek saya dan file suka

- styles
   _utils.less
   index.less

dan konten index.less adalah

<strong i="12">@import</strong> "./utils"

Saya menggunakan lebih sedikit api untuk mengkompilasi lebih sedikit file seperti

let less=require('less');
//....
less.render(indexContent,options,(err,result)=>{
       console.log(result.css)
});

ketika saya mengubah _utils.less konten, kode di atas akan secara otomatis dijalankan

tetapi sejak 3.0.x, ketika saya mengubah _utils.less konten, result.css adalah hasil pertama kali, apa pun berubah berapa kali.

tapi 2.7.x tidak apa-apa, ketika saya mengubah _utils.less konten, result.css juga berubah.

bug high priority research needed up-for-grabs

Komentar yang paling membantu

Di lingkungan Node, hapus file cache yang dikompilasi secara manual:

const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
     if (fileManager.contents) {
               fileManager.contents = {};
     }
});

Semua 19 komentar

Kedengarannya mirip dengan https://github.com/stevelacy/gulp-less/issues/283.
Saya kira dalam kasus "jam otomatis" ini, objek Less sama yang digunakan untuk mengkompilasi setiap pembaruan, bukan? Maka saya kira itu adalah sesuatu dengan tidak mengatur ulang beberapa cache impor antara panggilan render atau agak seperti itu.

@ seven-phases-max ya, gunakan objek Less yang sama untuk mengompilasi setiap pembaruan.
saya tidak menggunakan alat gulp-less, saya menggunakan lebih sedikit api secara langsung.
Sepertinya cache kurang hasilnya dan tidak update dengan benar

Jadi solusi cepat (hingga bug diterapkan) dalam kasus Anda akan ada di:

require('less').render(indexContent,options,(err,result)=>{
       console.log(result.css)
});

Ya, tampaknya masalahnya terletak pada komit ini di mana pohon panggilan dimanipulasi berdasarkan argumen https://github.com/less/less.js/commit/a48c24c4dd3c13e00a20ece80323768496a96b36#diff -a6b31db4e862654ae597161e441689bb

tampaknya masalahnya terletak pada komit ini ...

Hmm, sejujurnya di sana saya tidak melihat apa pun yang dapat memengaruhi impor ...

Di lingkungan Node, hapus file cache yang dikompilasi secara manual:

const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
     if (fileManager.contents) {
               fileManager.contents = {};
     }
});

Terima kasih @tiodot sepertinya berhasil sejauh ini ... Tapi semoga kita segera mendapatkan cara yang "lebih bersih"!

Mungkin ada hubungannya dengan baris-baris ini yang ditambahkan untuk 3.0. https://github.com/less/less.js/blob/master/lib/less/tree/mixin-definition.js#L9

Coba hapus pernyataan spesifik if / else ke hanya pernyataan lain dan lihat apakah masalahnya masih terjadi. Jika tidak, pengoptimalan ini mungkin perlu dihapus. Namun, apa yang lebih ideal adalah membersihkan pengelola file atau cache internal apa pun per panggilan parse / render baru.

Hanya memeriksa apakah ada pembaruan untuk masalah ini?
gulp-less membuat beberapa developer melakukan hal ini.

Baru saja mencoba lagi beberapa jam yang lalu dan tampaknya berfungsi dengan baik (tanpa tambalan). Ada lagi?

  "dependencies": {
    "browser-sync": "^2.24.4",
    "gulp": "^4.0.0",
    "gulp-autoprefixer": "^5.0.0",
    "gulp-clean-css": "^3.9.4",
    "gulp-hb": "^7.0.1",
    "gulp-less": "^4.0.0",
    "gulp-load-plugins": "^1.5.0",
    "gulp-rename": "^1.2.2"
  },
  "optionalDependencies": {
    "less": "^3.0.4"
  }

Saya memiliki masalah yang sama descibed oleh @xinglie upgrade dari [email protected].

Solusi yang disediakan oleh @tiodot tampaknya tidak berhasil untuk saya (dicoba: [email protected] dan [email protected]).
Juga menggunakan solusi require('less').render() disediakan oleh @ seven-phases-max tidak berhasil :(
Apakah mungkin ada lebih banyak saran? :)

Juga terpengaruh dengan ini :(

Hai, meskipun saya tidak yakin apa yang saya lakukan secara berbeda, solusi @tiodot asalkan TIDAK berfungsi untuk saya sekarang!
Saya mencobanya lagi dan saya pasti telah membuat kesalahan di suatu tempat dalam kode.
(menggunakan [email protected]).
Terima kasih @tiodot !

Terima kasih @tiodot

@tiodot @ hawkerboy7 @TigersWay Apakah cabang ini menyelesaikan masalah? Jika demikian, saya akan membuat PR - silakan lihat ini - https://github.com/matthew-dean/less.js/commits/cache-modified

Baru saja melakukan pemeriksaan di 2 proyek yang jelas berbeda, mengomentari @tiodot patch hebat di dalam package.json, dan tampaknya berfungsi dengan sempurna !!

  "optionalDependencies": {
    "less": "github:matthew-dean/less.js#cache-modified"
  },

@ matthew-dean bekerja untuk saya!

@ matthew-dean Ya itu telah menyelesaikan masalah! PR untuk menyelamatkan !! :)

@tiodot @ hawkerboy7 @TigersWay Keren, hal yang menyenangkan adalah, Anda harus mendapatkan sedikit lebih cepat. Sedikit kompilasi dengan cache yang hangat (fitur 3.x), jadi lebih baik untuk memperbaikinya; kalau tidak, saya akan menyarankan untuk mengeluarkannya. Akan melakukan PR.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat