Comments (6)
( it also works in the browser)
from detective.
'what about require("beep") in a string?'
from detective.
Congrats substack - you win the prize !
I think I had figured this when I wrote it, but it's a veeery edge case.
from detective.
you could easily remove these as well if you could be bothered. just extract all the strings and throw out the ones with strings inside them
from detective.
Regex and parsing can work okay, but not nearly as well as an AST.
See: https://github.com/coolaj86/node-pakman/blob/master/lib/get-requires.js
And: https://github.com/coolaj86/node-pakman/blob/master/lib/remove-comments.js
I keep having issues with my attempt, so I'm really glad to have found detective. :-D
from detective.
100% bulletproof parsing cannot be done safely just with regular expressions, it's impossible if you look closely at JavaScript syntax.
Still you can build straightforward code walker, that would be faster than any tool that creates whole AST tree. I've once built such for Webmake -> https://github.com/medikoo/find-requires/blob/master/lib/direct.js
It works perfect, the only thing it's missing for now is awareness of HTML comments which are valid in EcmaScript syntax. I haven't seen anyone using them, but still it would good to take them into account I plan fix that ;-)
from detective.
Related Issues (20)
- Ability to handle cases where require is called with a non-literal parameter HOT 2
- require('something')() HOT 1
- Support array calls HOT 1
- Support AMD syntax for finding dependencies? HOT 1
- 'Missing yield in generator' should not be an error HOT 1
- Add a note about requires with more than string literals HOT 2
- why not use the Regular Expression to find all params in require function?? HOT 2
- Upgrade acorn HOT 1
- Skip commented-out requires HOT 12
- Upgrade to use Acorn v2 HOT 3
- Pass `sourceType` option through to acorn HOT 2
- Support ES6 imports HOT 3
- Add support for ES6 template functions HOT 1
- Revert 'require' word optimization HOT 1
- Newer keywords like async/await is not supported HOT 3
- syntax error is returned when object spread is used HOT 1
- Replace `acorn` parser for `babylon`? HOT 5
- Document how `detective` can be extended
- Insecure dependancy "minimist": "^1.1.1" HOT 5
- Update to [email protected]
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from detective.