This blog post describes a model that we found useful for talking about CPAN dependencies and reverse dependencies at the QA Hackathon. At the head of the river is Perl itself with the core modules. The river flows into the sea, which contains all distributions that aren't used by any other distribution. Other distributions sit somewhere along the river, their position determined by their reverse dependencies. This post introduces the core concepts, but nothing more.
App::UpdateCPANfile reads cpanfile, pin dependencies, update dependencies and write back to cpanfile.
(flycheck-define-checker perl-project-libs "A perl syntax checker." :command ("perl" "-MProject::Libs lib_dirs => [qw(local/lib/perl5)]" "-wc" source-inplace) :error-patterns ((error line-start (minimal-match (message)) " at " (file-name) " line " line (or "." (and ", " (zero-or-more not-newline))) line-end)) :modes (cperl-mode)) (add-hook 'cperl-mode-hook (lambda () (flycheck-mode t) (setq flycheck-checker 'perl-project-libs)))
> mi6 new Foo::Bar # create Foo-Bar distribution > cd Foo-Bar > mi6 build # build the distribution and re-generate README.md/META6.json > mi6 test # run tests > mi6 release # release! !!! EXPERIMENTAL !!! > mi6 dist # make distribution tarball > mi6 upload # upload distribution tarball to CPAN
Where should I look for perl 6 libraries?
When I've chosen one, how can I add it to my perl 6 project?
Use zef to install it on your local system.
Read the modules doc page for directions on
useing a module in your project.
If I find it [somewhere], how can I add it to my perl 6 project?
If zef can see it (and zef will usually be able to see a module if its repo is listed at modules.perl6.org) then zef should be able to install it. If not, contact the author or ask about it on #perl6.
As an answer to point 2) and 3) , you can take a look at
6pm. It's idea is to be NPM for Perl6. It works over
$ 6pm init # Install dependencies to ./perl6_modules and add it to META6.json $ 6pm install Test::Meta --save # Run a file using the local dependencies $ 6pm exec-file test.p6 # Make your code always use 6pm by making it "use SixPM;" $ perl6 test.p6
See the full documentation for more information.
Browserify lets you require('modules') in the browser by bundling up all of your dependencies.
Frameworks are one of the hugest anti-patterns in software development. They're hard to learn. They limit your creativity. They increase your project's complexity and dependencies. They go out of business and get abandoned. You have to maintain and upgrade your code to match the latest framework versions for no good reason. You have to search for help and ask others for advice when you're stuck. And you probably only need a small percentage of features that the framework offers anyway. They just don't make much sense.
for automating Clojure projects without setting your hair on fire
J'aimerai tant que ce soit aussi bien que le CPAN :')