You can follow the steps to develop a package using spm.
$ spm --version
3.6.0
Make sure that [email protected] is installed.
$ mkdir now && cd now
$ spm initCreating a spm package:
[?] Package name: (now)
[?] Version: (1.0.0)
[?] Description: hello world
[?] Author: pigcan <[email protected]>
Initialize a spm package Succeccfully!
Then you have a package named now.
Install default devDependencies first.
$ spm installWe need moment as a dependency which can be found here.
$ spm install moment --saveEdit index.js as follow, just like nodejs.
// require module in spm.dependencies
var moment = require('moment');
// require relative file in you project
// var util = require('./util');
var now = moment().format('MMMM Do YYYY, h:mm:ss a');
module.exports = now;Then edit examples/index.md:
# Demo
---
## Normal usage
````javascript
var now = require('../index');
console.log(now);
````
Run spm doc to start a documentation service at 127.0.0.1:8000 .
$ spm docOpen http://127.0.0.1:8000/examples/ in browser to see the result.
Except using three ` in Markdown file, you can also use four ` to wrap your code.
It is a special rule that make your code highlighted and would be inserted to document page as a script block so they can be excuted at the same time. That is very useful for debugging your demo and writing a beautiful documentation both.
If you want to insert a iframe in your demo, make your code to iframe type.
````iframe:600 I am in a iframe of 600px high ````
If you don't want to debug your code by
spm doc, you can try spm-webpack-server to debugCommonJSmodules in development.
Edit test file at tests/now-spec.js. We introduce a default assert solution expect.js.
var expect = require('expect.js');
var now = require('../index');
describe('now', function() {
it('normal usage', function() {
expect(now).to.be.a('string'); // add this
});
});See tests result.
$ spm testYou can also open http://127.0.0.1:8000/tests/runner.html in browser.
Now you have a great package having wonderful function and complete tests case, you can publish the package to spmjs.io.
$ spm publishYou should run spm login first to get permission, otherwise it would propmt the authorization problem.
$ spm loginusername is the name of your github account, and authkey can be found at http://spmjs.io/account after signing in.
The package
nowis published by me, of cause. You should change other name and retry.
spmjs.io can host your package's documentation. What all you need to do is editing README.md and examples folder, preview it by spm doc watch, then publish it to spmjs.io.
$ spm doc publishThe documentation url is http://docs.spmjs.io/{{name}}/ for latest version and http://docs.spmjs.io/{{name}}/{{version}}/ for each versions.
For example, http://docs.spmjs.io/now/.
$ spm buildThis command will build the files indicated by spm.main and spm.output field to dist folder. The spm.build would be executed as arguments.
The default build result is a package which could be deployed at cdn. Then you can use it .For example.
In your html
<script>
var now = require('now');
console.log(now);
</script>In your project package.json
{
"name": "Project-Name",
"spm": {
"output": ["index.js"],
"dependencies": {
"now": "1.0.0"
}
},
"devDependencies": {
"spm": "~3.6.0"
},
"scripts": {
"build": "spm build"
}
}Now you learn how to develop a package using spm, welcome to publish your packages here!