This repository has been archived by the owner. It is now read-only.

迁移 spm2 的模块到 spm3

afc163 edited this page Nov 25, 2014 · 1 revision

DEMO

anima-widget 为例。

迁移步骤

安装 spm3

$ npm install spm -g

修改 package.json

  1. 合并 family 到 name,例如:

    - "name": "widget",
    - "family": "anima"
    + "name": "anima-widget"

    spm@3.x 中不再有 family,和 npm 一样我们使用唯一的 name 占坑的方式组织模块。

    以上是 Arale 等模块的迁移逻辑,形式统一且避免冲突。如果没有被占用,你当然可以直接使用原来的 name 。

  2. 修改 spm.output 为 spm.main,注意 spm.main 需为字符串

    - "output": ["src/widget.js"]
    + "main": "src/widget"

    这里更推荐的做法是在根目录建立 index.js,package.json 里设 "main": "index.js",然后 index.js 里 module.exports = require("./src/widget");

  3. 修改 spm.alias 为 spm.dependencies,注意 dependencies 的格式为 "{{name}}": "{{version}}"

    - "alias": { "base": "anima/base/1.1.0/base" }
    + "dependencies": { "anima-base": "1.1.0" }
  4. 如果原来有使用 jQuery,修正原来 require('$') 的写法为 require('jquery'),并在依赖中指明 jquery 版本号,建议为 1.7.2 。

     "dependencies": { 
    +  "jquery": "1.7.2"
     }

修改源文件,通常只要做两点修改

  1. 去 define 封装,采用 CommonJS 的书写规范。

    - define(function(require, module, exports) {
      ...
    - });
  2. 如果有依赖其他 package,注意下依赖的 package 是否有修改 name,比如:

    - var base = require('base');
    + var base = require('anima-base');
  3. spm install 安装依赖,然后运行 spm doc watch 并打开 http://127.0.0.1:8000/ ,确保文档和演示都能正确显示。

修改 tests 目录里的用例文件

  1. 去 define 封装

    - define(function(require, module, exports) {
      ...
    - });
  2. 修改 require 的绝对地址为相对地址。

  3. 添加 expect 依赖到 devDependencies 中。

      "spm": {
        "devDependencies": {
    +     "expect.js": "0.3.1"
        }
      }
  4. 运行 spm test 确保用例测试通过。

  5. 运行 spm doc watch 并打开 http://127.0.0.1:8000/tests/runner.html ,确保用例跑过。

删除和忽略部分目录

  1. 删除 dist 目录,构建后的文件不再存在源码中

  2. 增加 .spmignore 文件,参考这个

登陆 spm 并发布

# 需在 http://spmjs.io/ 登陆,取得 token
$ spm login

# 发布
$ spm publish

参考链接

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.