Publishing
It is recommended that you distribute your modules and packages in a compiled form.
The official npm packages does this and delivers the files in a dist/ directory.
Using NODE_ENV=production is recommended to avoid bloat and allow for proper tree-shaking, etc.
You can distribute the sources in addition, but it all depends on the target (ES vs commonjs etc).
npm
This is a typical setup of package.json that distributes only the runtime files and metadata.
{
  "scripts": {
    "build": "webpack",
    "watch": "webpack --watch",
    "test": "jest",
    "eslint": "eslint *.js",
    "stylelint": "stylelint index.scss src/**/*.scss",
    "prepublishOnly": "npm run test && npm run eslint && npm run stylelint && rm ./dist/* && NODE_ENV=production npm run build"
  },
  "files": [
    "dist/",
    "server.js",
    "metadata.json"
  ],
  // These are not required for packages
  "main": "dist/main.js",
  "style": "dist/main.css"
}
This ensures that all your tests are valid before you publish your final pack.
You can run tar tvf $(npm pack) to confirm what files are published before actually running npm publish.
git
You can also distribute via git, where everything in the npm section above still applies.
A disadvantage using git for deployment is that you have to create a specific branch to avoid users downloading unwanted files and sources.