Custom npm modules with Meteor
Install the package meteorhacks:npm
$ meteor add meteorhacks:npm Changes to your project's package version selections: meteorhacks:async added, version 1.0.0 meteorhacks:npm added, version 1.2.2
Run the project to initialize the module
$ meteor [[[[[ ~/path/to/app ]]]]] => Started proxy. => Started MongoDB. Loading plugin `initializing-npm-supp... | -> creating `packages.json` for the first time. -> add your npm modules to `packages.json` => Creating container package for npm modules -> npm support has been initialized. -> please start your app again.
Re-run the project to define the version
$ meteor [[[[[ ~/path/to/app ]]]]] => Started proxy. => Started MongoDB. Changes to your project's package version selections: npm-container added, version 1.0.0 => Started your app. => App running at: http://localhost:3000/
At that point your application is initialized to install and deploy custom
npm modules by adding them to the
packages.json file at the root of your
Once the application has been initialized, different steps are required to ensure the application will be deployed correctly.
- Add the
npm-containerpackage to your project
$ echo 'npm-container' >> .meteor/packages
- Check in your Git repository all the generated files.
$ git add -f packages/npm-container .meteor/packages .meteor/versions packages.json $ git commit -m "Add npm package handling"
That’s it, all the required files are staged for commit:
$ git push scalingo master
npm support has been initialized
=> Creating container package for npm modules -> npm support has been initialized. -> please start your app again. This command has been deprecated in favor of 'meteor build', which allows you to build for multiple platforms and outputs a directory instead of a single tarball. See 'meteor help build'for more information. meteor bundle generation complete. Finding dependencies... fs.js:666 return binding.readdir(pathModule._makeLong(path)); ^
Ensure that all the steps in the deployment part have been done,
this error is directly linked to an oblivion of checking in
packages/npm-container to the Git repository and adding
Unknown package: npm-container
Could not resolve the specified constraints for this project: Error: unknown package: npm-container
This error is due to the fact that the package
npm-container is present in
.meteor/packages file but that the directory
not been added correctly to the Git repository. Please ensure this point.
error: couldn’t read npm version lock information
=> Errors while initializing project: While building package npm-container: error: couldn't read npm version lock information
This error happened when the internal files of
npm-container are already defined
and that you’ve added or updated a npm package in your project. To fix this you have
to remove these data from your Git repository
git rm -r --cached packages/npm-container/.npm echo packages/npm-container/.npm >> .gitignore git commit -m "remove internal data of npm-container from repository" git push scalingo master
That should do the trick and your application will be deployed correctly.