terser / html-minifier-terser

actively maintained fork of html-minifier - minify HTML, CSS and JS code using terser - supports ES6 code
https://terser.org/html-minifier-terser
MIT License
376 stars 30 forks source link

Missing dependency in 6.0.0 version #73

Closed 97carmine closed 3 years ago

97carmine commented 3 years ago

Version

Webpack log:

ERROR in ./.yarn/cache/terser-npm-5.7.2-c24448e930-143029e7f7.zip/node_modules/terser/dist/bundle.min.js 27467:31-53
Module not found: Error: Can't resolve 'acorn' in '/mnt/data/Repositorios/portfolio/.yarn/cache/terser-npm-5.7.2-c24448e930-143029e7f7.zip/node_modules/terser/dist'
resolve 'acorn' in '/mnt/data/Repositorios/portfolio/.yarn/cache/terser-npm-5.7.2-c24448e930-143029e7f7.zip/node_modules/terser/dist'
  Parsed request is a module
  using description file: /mnt/data/Repositorios/portfolio/.yarn/cache/terser-npm-5.7.2-c24448e930-143029e7f7.zip/node_modules/terser/dist/package.json (relative path: .)
    resolve as module
      request is not managed by the pnpapi
        terser tried to access acorn, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
        Required package: acorn
        Required by: terser@npm:5.7.2 (via /mnt/data/Repositorios/portfolio/.yarn/cache/terser-npm-5.7.2-c24448e930-143029e7f7.zip/node_modules/terser/dist/)

Command yarn info html-minifier-terser:

└─ html-minifier-terser@npm:6.0.0
   ├─ Version: 6.0.0
   │
   ├─ Exported Binaries
   │  └─ html-minifier-terser
   │
   └─ Dependencies
      ├─ camel-case@npm:^4.1.2 → npm:4.1.2
      ├─ clean-css@npm:^5.1.3 → npm:5.1.5
      ├─ commander@npm:^7.2.0 → npm:7.2.0
      ├─ he@npm:^1.2.0 → npm:1.2.0
      ├─ param-case@npm:^3.0.4 → npm:3.0.4
      ├─ relateurl@npm:^0.2.7 → npm:0.2.7
      └─ terser@npm:^5.7.1 → npm:5.7.2

Returning to version 5.1.1 the issue is fixed

DanielRuf commented 3 years ago

Hi @97carmine,

it seems you use the new plug and play feature of yarn which reports this:

terser tried to access acorn, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.

Please report this error in the repo of the affected package which is terser itself so they can fix this.

https://github.com/terser/terser/issues

I can see acorn at https://github.com/terser/terser/blob/master/package.json#L52 so maybe it has to be moved to the normal dependencies.

Alternatively you can disable the pnp feature of yarn which will apply the legacy behavior or you can use npm.

tarikjn commented 3 years ago

I couldn't seem to find a submitted issue on terser so I submitted one: https://github.com/terser/terser/issues/1076

Should this issue remain open in the meantime? Even though the source of the issue is in terser, once it's fixed there, the dependency would have to be bumped in this package. A package breaking Yarn PnP builds is a fairly rare occurrence nowadays. I'll track both issues and hopefully, this can be resolved soon.

tarikjn commented 3 years ago

For anyone who needs a quick fix in the meantime, v5.1.1 of html-minifier-terser is not affected by this issue.

DanielRuf commented 3 years ago

This issue here can stay closed since the consumers of html-minifier-terser will receive minor and patch releases of terser.

See also https://github.com/terser/html-minifier-terser/blob/master/package.json#L73

^5.8.0 will pick up any 5.x release.

Conduitry commented 3 years ago

Terser doesn't depend on Acorn unless it is instructed to parse with Acorn - https://github.com/terser/terser#use-acorn-for-parsing - and so it shouldn't be a prod dependency.

Is Yarn trying to aggressively follow dependencies wherever it sees a require()? If there's a code comment or something that can be placed next to the require() that tells it not to do that, it would be neighborly of Terser to add that. But AFAICT Terser is doing nothing wrong.

DanielRuf commented 3 years ago

We should keep the discussion in one place.

Since this is a problem with terser, I have replied at https://github.com/terser/terser/issues/1076#issuecomment-927106824

Locking this issue since any further replies here should belong to the issue at https://github.com/terser/terser/issues/1076