Coder Social home page Coder Social logo

dmn's Introduction

#dmn Build Status

Because I don't need your tests in my production!

Packages in npm are bloated with stuff which you will never ever use, like build files and different kinds of test data. Guys from npm provided us with .npmignore files, but seems like almost no one uses it. Please, stop publishing your development stuff to npm. If I would like to run your tests and start hacking on your project I will do git clone not npm install. Once our project has increased in size in 13Mb and this is just because of single test data file which was used by one of our dependencies (true story). Poor testing farm...

So:

  • If you spread installed packages across multiple machines in your environment then bloated dependencies make you unhappy.
  • If you get your local repo synced (e.g using Dropbox or Google Drive) then bloated dependencies make you unhappy (it takes so goddamn long to sync a big amount of smal useless files).
  • If you distribute your project to end-user not via npm then bloated dependencies make you unhappy.
  • If you are a good person who cares about others then bloated dependencies make you unhappy. Just imagine how much useless stuff which will never be used by anyone is fetched, served and stored by npm and e.g. TravisCI. Imagine how thousands of small useless files impacts installation time of your package.

dmn ("dependency minifier" or "damn missing .npmignore" or "dmn is a meaningless name") - is a command line tool which will help you deal with bloated dependencies. It can clean your node_modules from stuff which you will never need. And it can gracefully generate .npmignore file for your project. Both operations based on list of ignore targets. Send me a pull request If I missed something in this list.

##Install

$ npm install -g dmn

##Usage

  Usage: dmn <command(s)> [options]
        
  Commands:
      gen         :  generate (or add items to existing) .npmignore file 
                     To keep item in release package just prepend it's
                     pattern with '!'.
      clean       :  clean project's node_modules from useless clutter

  Options:
      -f, -force  :  don't ask for command confirmation
      -l, -list   :  list files that will be deleted by "clean" command

##Examples Generate .npmignore for your project:

$ cd <to_your_project>
$ dmn gen --f

Or do this before publishing:

$ dmn gen --f && npm publish

Or even better:

$ dmn gen --f && git add .npmignore && git commit ...

Clean your project's dependencies:

$ cd <to_your_project> 
$ dmn clean --f

Clean newly installed dependency:

$ npm install --save <new_dependency> && dmn clean --f

Install dependencies then clean them for cloned repo:

$ git clone https://github.com/<username>/<reponame>
$ cd <reponame> && npm install && dmn clean --f

##Questions or suggestions? If you have any questions, please feel free to create an issue here on github.

##Author Ivan Nikulin ([email protected])

dmn's People

Contributors

inikulin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.