nadesiko3 3.3.49 → 3.3.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +143 -143
- package/batch/.DS_Store +0 -0
- package/batch/browsers.template.md +3 -3
- package/batch/build_browsers.nako3 +72 -72
- package/batch/build_command.nako3 +44 -44
- package/batch/build_nako_version.nako3 +42 -42
- package/batch/calc_hash.nako3 +29 -29
- package/batch/cmd_txt2json.nako3 +74 -74
- package/batch/command.txt +162 -83
- package/batch/command_nakopad.txt +69 -0
- package/batch/download-extlib.nako3 +43 -43
- package/batch/gen_command_nakopad.nako3 +57 -57
- package/batch/jsplugin2text.nako3 +285 -285
- package/batch/pickup_command.nako3 +113 -110
- package/batch/pickup_reserved_words.nako3 +11 -11
- package/batch/publish_version.nako3 +46 -46
- package/batch/show_agents.js +14 -14
- package/batch/turtle2js.nako3 +21 -21
- package/bin/cnako3 +10 -10
- package/core/LICENSE +21 -21
- package/core/README.md +66 -66
- package/core/batch/build_nako_version.nako3 +42 -42
- package/core/command/snako.mjs +105 -105
- package/core/command/snako.mts +116 -116
- package/core/index.mjs +21 -21
- package/core/package.json +47 -47
- package/core/sample/hello.nako3 +7 -7
- package/core/sample/hoge.mjs +4 -4
- package/core/sample/hoge.mts +6 -6
- package/core/src/nako3.mjs +870 -858
- package/core/src/nako3.mts +983 -967
- package/core/src/nako_colors.mjs +78 -78
- package/core/src/nako_colors.mts +86 -86
- package/core/src/nako_core_version.mjs +8 -8
- package/core/src/nako_core_version.mts +19 -19
- package/core/src/nako_csv.mjs +185 -185
- package/core/src/nako_csv.mts +188 -188
- package/core/src/nako_errors.mjs +173 -173
- package/core/src/nako_errors.mts +197 -197
- package/core/src/nako_from_dncl.mjs +255 -255
- package/core/src/nako_from_dncl.mts +250 -250
- package/core/src/nako_gen.mjs +1647 -1648
- package/core/src/nako_gen.mts +1718 -1719
- package/core/src/nako_gen_async.mjs +1659 -1659
- package/core/src/nako_gen_async.mts +1732 -1732
- package/core/src/nako_global.mjs +109 -107
- package/core/src/nako_global.mts +141 -138
- package/core/src/nako_indent.mjs +445 -445
- package/core/src/nako_indent.mts +492 -492
- package/core/src/nako_josi_list.mjs +38 -38
- package/core/src/nako_josi_list.mts +45 -45
- package/core/src/nako_lex_rules.mjs +253 -253
- package/core/src/nako_lex_rules.mts +260 -260
- package/core/src/nako_lexer.mjs +609 -609
- package/core/src/nako_lexer.mts +612 -612
- package/core/src/nako_logger.mjs +199 -199
- package/core/src/nako_logger.mts +232 -232
- package/core/src/nako_parser3.mjs +2441 -2439
- package/core/src/nako_parser3.mts +2197 -2195
- package/core/src/nako_parser_base.mjs +371 -370
- package/core/src/nako_parser_base.mts +372 -370
- package/core/src/nako_parser_const.mjs +37 -37
- package/core/src/nako_parser_const.mts +37 -37
- package/core/src/nako_prepare.mjs +304 -304
- package/core/src/nako_prepare.mts +315 -315
- package/core/src/nako_reserved_words.mjs +38 -38
- package/core/src/nako_reserved_words.mts +38 -38
- package/core/src/nako_source_mapping.mjs +207 -207
- package/core/src/nako_source_mapping.mts +262 -262
- package/core/src/nako_test.mjs +37 -37
- package/core/src/nako_types.mjs +13 -25
- package/core/src/nako_types.mts +144 -151
- package/core/src/plugin_csv.mjs +49 -49
- package/core/src/plugin_csv.mts +50 -50
- package/core/src/plugin_math.mjs +328 -328
- package/core/src/plugin_math.mts +326 -326
- package/core/src/plugin_promise.mjs +91 -91
- package/core/src/plugin_promise.mts +91 -91
- package/core/src/plugin_system.mjs +2832 -2832
- package/core/src/plugin_system.mts +2690 -2690
- package/core/src/plugin_test.mjs +34 -34
- package/core/src/plugin_test.mts +34 -34
- package/demo/.DS_Store +0 -0
- package/demo/ace_editor.html +89 -89
- package/demo/ace_editor_tabs.html +161 -161
- package/demo/basic.html +71 -71
- package/demo/browsers.html +10 -9
- package/demo/css/basic.css +3 -3
- package/demo/css/common.css +157 -157
- package/demo/css/editor.css +8 -8
- package/demo/css/flow.css +3 -3
- package/demo/css/index.css +3 -3
- package/demo/extlib/.DS_Store +0 -0
- package/demo/flow.html +98 -98
- package/demo/graph.html +53 -53
- package/demo/image/nakopad-icon256.png +0 -0
- package/demo/index.html +133 -133
- package/demo/js/common.js +17 -17
- package/demo/js/turtle3d_test.js +44 -44
- package/demo/js/turtle_test.js +45 -45
- package/demo/nako3/calc.nako3 +4 -4
- package/demo/runscript.html +47 -47
- package/demo/runscript2.html +33 -33
- package/demo/runscript3.html +35 -35
- package/demo/runscript4.html +33 -33
- package/demo/turtle.html +58 -58
- package/demo/turtle2.html +141 -141
- package/demo/turtle3.html +279 -279
- package/demo/turtle3d.html +58 -58
- package/demo/turtle3d2.html +107 -107
- package/demo/version.html +24 -24
- package/doc/SETUP.md +157 -157
- package/doc/about.md +17 -17
- package/doc/browsers.md +26 -26
- package/doc/docgen.md +21 -21
- package/doc/editor.md +44 -44
- package/doc/files.md +39 -39
- package/doc/plugins.md +234 -234
- package/doc/release.md +79 -79
- package/doc/textlint.md +43 -43
- package/doc/win32.md +57 -57
- package/package.json +195 -195
- package/release/_hash.txt +28 -28
- package/release/_script-tags.txt +14 -14
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/editor.js +1 -1
- package/release/nako_gen_async.js +2 -1
- package/release/nako_gen_async.js.LICENSE.txt +35 -0
- package/release/plugin_caniuse.js.LICENSE.txt +11 -0
- package/release/plugin_csv.js +1 -1
- package/release/plugin_csv.js.LICENSE.txt +15 -0
- package/release/plugin_datetime.js.LICENSE.txt +15 -0
- package/release/plugin_kansuji.js.LICENSE.txt +3 -0
- package/release/plugin_markup.js.LICENSE.txt +11 -0
- package/release/plugin_turtle.js.LICENSE.txt +15 -0
- package/release/plugin_webworker.js.LICENSE.txt +3 -0
- package/release/plugin_weykturtle3d.js.LICENSE.txt +3 -0
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/wnako3.js +1 -1
- package/release/wnako3.js.LICENSE.txt +203 -1
- package/release/wnako3webworker.js +2 -1
- package/release/wnako3webworker.js.LICENSE.txt +131 -0
- package/src/.DS_Store +0 -0
- package/src/browsers.txt +12 -11
- package/src/browsers_agents.json +2 -2
- package/src/browsers_agents.mjs +1 -1
- package/src/cnako3.mjs +17 -17
- package/src/cnako3.mts +18 -18
- package/src/cnako3mod.mjs +682 -707
- package/src/cnako3mod.mts +688 -712
- package/src/commander_ja.mjs +164 -164
- package/src/commander_ja.mts +161 -161
- package/src/enako3.mjs +68 -68
- package/src/era.mjs +22 -22
- package/src/image_turtle-elephant.mjs +2 -2
- package/src/image_turtle-panda.mjs +2 -2
- package/src/image_turtle64.mjs +2 -2
- package/src/index.mjs +9 -9
- package/src/index.mts +10 -10
- package/src/nako3editorfix.sfd +106 -106
- package/src/nako_version.mjs +8 -8
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser.mjs +213 -213
- package/src/plugin_browser.mts +206 -206
- package/src/plugin_browser_ajax.mjs +399 -399
- package/src/plugin_browser_audio.mjs +109 -109
- package/src/plugin_browser_canvas.mjs +449 -449
- package/src/plugin_browser_chart.mjs +294 -294
- package/src/plugin_browser_color.mjs +49 -49
- package/src/plugin_browser_crypto.mjs +26 -26
- package/src/plugin_browser_dialog.mjs +53 -53
- package/src/plugin_browser_dom_basic.mjs +336 -336
- package/src/plugin_browser_dom_event.mjs +193 -193
- package/src/plugin_browser_dom_parts.mjs +396 -396
- package/src/plugin_browser_geolocation.mjs +51 -51
- package/src/plugin_browser_hotkey.mjs +25 -25
- package/src/plugin_browser_html.mjs +59 -59
- package/src/plugin_browser_in_worker.mjs +45 -45
- package/src/plugin_browser_location.mjs +21 -21
- package/src/plugin_browser_speech.mjs +111 -111
- package/src/plugin_browser_storage.mjs +121 -121
- package/src/plugin_browser_system.mjs +31 -31
- package/src/plugin_browser_websocket.mjs +73 -73
- package/src/plugin_caniuse.mjs +29 -29
- package/src/plugin_datetime.mjs +394 -394
- package/src/plugin_httpserver.mjs +277 -277
- package/src/plugin_httpserver.mts +286 -286
- package/src/plugin_kansuji.mjs +224 -224
- package/src/plugin_keigo.mjs +55 -55
- package/src/plugin_markup.mjs +32 -32
- package/src/plugin_node.mjs +1047 -1047
- package/src/plugin_node.mts +980 -980
- package/src/plugin_turtle.mjs +647 -647
- package/src/plugin_webworker.mjs +334 -334
- package/src/plugin_weykturtle3d.mjs +1214 -1214
- package/src/plugin_worker.mjs +95 -95
- package/src/repl.nako3 +63 -63
- package/src/wnako3.mjs +12 -12
- package/src/wnako3.mts +11 -11
- package/src/wnako3_editor.css +215 -215
- package/src/wnako3_editor.mjs +1542 -1542
- package/src/wnako3_editor.mts +1658 -1657
- package/src/wnako3mod.mjs +213 -213
- package/src/wnako3mod.mts +214 -214
- package/src/wnako3webworker.mjs +69 -69
- package/test/.DS_Store +0 -0
- package/test/ace_editor/karma.config.js +94 -94
- package/test/ace_editor/test/.babelrc.json +3 -3
- package/test/ace_editor/test/ace_editor_test.js +178 -178
- package/test/ace_editor/test/html/custom_context.html +139 -139
- package/test/async/async_basic_test.mjs +122 -122
- package/test/browser/.DS_Store +0 -0
- package/test/browser/karma.config.js +221 -221
- package/test/browser/test/.babelrc.json +3 -3
- package/test/browser/test/compare_util.js +50 -50
- package/test/browser/test/html/div_basic.html +2 -2
- package/test/browser/test/html/event_dom_form.html +4 -4
- package/test/browser/test/html/event_dom_scrolldiv.html +5 -5
- package/test/browser/test/import_plugin_checker.js +24 -24
- package/test/browser/test/plugin_browser_test.js +51 -51
- package/test/browser/test/plugin_browser_test_ajax.js +123 -123
- package/test/browser/test/plugin_browser_test_color.js +18 -18
- package/test/browser/test/plugin_browser_test_dialog.js +72 -72
- package/test/browser/test/plugin_browser_test_dom_event.js +598 -598
- package/test/browser/test/plugin_browser_test_dom_parts.js +125 -125
- package/test/browser/test/plugin_browser_test_system.js +9 -9
- package/test/browser/test/plugin_turtle_test.js +817 -817
- package/test/browser/test/plugin_webworker_test.js +86 -86
- package/test/browser/test/require_test.js +68 -68
- package/test/bundled/.DS_Store +0 -0
- package/test/bundled/karma.config.base.js +117 -117
- package/test/bundled/karma.config.js +86 -86
- package/test/bundled/test/.babelrc.json +3 -3
- package/test/bundled/test/bundled_test.js +69 -69
- package/test/bundled/test/html/custom_context.html +65 -65
- package/test/bundled/test/html/custom_debug.html +66 -66
- package/test/bundled/test4b.cmd +52 -52
- package/test/bundled/test_base/.DS_Store +0 -0
- package/test/bundled/test_base/.babelrc.json +3 -3
- package/test/bundled/test_base/_checktool_test.js +25 -25
- package/test/bundled/test_base/basic_ajax_test.js +56 -56
- package/test/bundled/test_base/basic_async_test.js +18 -18
- package/test/bundled/test_base/basic_test.js +153 -153
- package/test/bundled/test_base/calc_test.js +132 -132
- package/test/bundled/test_base/css/browsers_box.css +114 -114
- package/test/bundled/test_base/html/custom_context.html +69 -69
- package/test/bundled/test_base/html/custom_debug.html +71 -71
- package/test/bundled/test_base/js/browsers_box.js +72 -72
- package/test/bundled/test_base/plugin_csv_test.js +37 -37
- package/test/bundled/test_base/plugin_datetime_test.js +115 -115
- package/test/bundled/test_base/plugin_kansuji_test.js +49 -49
- package/test/bundled/test_base/plugin_system_test.js +410 -410
- package/test/bundled/test_base/plugin_webworker_test.js +53 -53
- package/test/bundled/test_base/test_utils.js +191 -191
- package/test/common/.DS_Store +0 -0
- package/test/common/plugin_browser_test.mjs +22 -22
- package/test/common/plugin_browser_ut_audio_test.mjs +108 -108
- package/test/common/plugin_browser_ut_color_test.mjs +21 -21
- package/test/common/plugin_browser_ut_dialog_test.mjs +100 -100
- package/test/common/plugin_browser_ut_html_test.mjs +13 -13
- package/test/common/plugin_browser_ut_system_test.mjs +10 -10
- package/test/common/plugin_markup_test.mjs +23 -23
- package/test/jsconfig.json +19 -19
- package/test/karma.config.js +91 -91
- package/test/node/.DS_Store +0 -0
- package/test/node/async_test.mjs +96 -96
- package/test/node/commander_ja_test.mjs +89 -89
- package/test/node/error_message_test.mjs +243 -243
- package/test/node/kai_test.nako3 +6 -6
- package/test/node/node_test.mjs +60 -60
- package/test/node/plugin_broken.js.txt +3 -3
- package/test/node/plugin_browser_ut_ajax_test.mjs.todo +357 -357
- package/test/node/plugin_browser_ut_location_test.mjs +42 -42
- package/test/node/plugin_markup_test.mjs +47 -47
- package/test/node/plugin_math_test.mjs +45 -45
- package/test/node/plugin_node_test.mjs +98 -98
- package/test/node/plugin_test.mjs +44 -44
- package/test/node/relative_import_test_1.nako3 +1 -1
- package/test/node/relative_import_test_2.nako3 +2 -2
- package/test/node/require_nako3_test.mjs +67 -67
- package/test/node/requiretest.nako3 +4 -4
- package/test/node/requiretest_indirect.nako3 +1 -1
- package/test/node/requiretest_name.nako3 +5 -5
- package/test/node/runtime_error.nako3 +2 -2
- package/test/node/scope1.nako3 +10 -10
- package/test/node/scope2.nako3 +12 -12
- package/test/node/side_effects_test.mjs +39 -39
- package/test/node/sjis.txt +5 -5
- package/test/node/syntax_error.nako3 +1 -1
- package/test/node/wnako3_editor_test.mjs +384 -384
- package/tools/.DS_Store +0 -0
- package/tools/README.md +12 -12
- package/tools/check_new_version.nako3 +25 -25
- package/tools/nako3edit/.DS_Store +0 -0
- package/tools/nako3edit/a.sqlite3 +0 -0
- package/tools/nako3edit/html/.DS_Store +0 -0
- package/tools/nako3edit/html/daisyui/LICENSE +22 -22
- package/tools/nako3edit/html/daisyui/version_2.14.1 +1 -1
- package/tools/nako3edit/html/edit.html +170 -170
- package/tools/nako3edit/html/edit_plugin.js +6 -6
- package/tools/nako3edit/html/files.html +125 -125
- package/tools/nako3edit/html/nako3edit.css +65 -65
- package/tools/nako3edit/index.mjs +248 -248
- package/tools/nako3server/index.html +10 -10
- package/tools/nako3server/index.mjs +116 -116
- package/tools/nako3server/index.nako3 +34 -34
- package/core/.editorconfig +0 -6
- package/core/.eslintrc.cjs +0 -33
- package/core/.github/dependabot.yml +0 -7
- package/core/.github/workflows/nodejs.yml +0 -37
- package/core/.github/workflows/super-linter.yml +0 -61
- package/core/.github/workflows/textlint.yml +0 -199
- package/core/index.mts +0 -21
- package/core/test/array_test.mjs +0 -34
- package/core/test/basic_test.mjs +0 -344
- package/core/test/calc_test.mjs +0 -140
- package/core/test/core_module_test.mjs +0 -23
- package/core/test/debug_test.mjs +0 -16
- package/core/test/dncl_test.mjs +0 -94
- package/core/test/error_message_test.mjs +0 -210
- package/core/test/error_test.mjs +0 -16
- package/core/test/flow_test.mjs +0 -373
- package/core/test/func_call.mjs +0 -160
- package/core/test/func_test.mjs +0 -149
- package/core/test/indent_test.mjs +0 -364
- package/core/test/lex_test.mjs +0 -168
- package/core/test/literal_test.mjs +0 -73
- package/core/test/nako_lexer_test.mjs +0 -35
- package/core/test/nako_logger_test.mjs +0 -76
- package/core/test/nako_logger_test.mts +0 -78
- package/core/test/plugin_csv_test.mjs +0 -38
- package/core/test/plugin_promise_test.mjs +0 -18
- package/core/test/plugin_system_test.mjs +0 -630
- package/core/test/prepare_test.mjs +0 -96
- package/core/test/re_test.mjs +0 -22
- package/core/test/side_effects_test.mjs +0 -92
- package/core/test/variable_scope_test.mjs +0 -149
- package/core/tsconfig.json +0 -101
package/doc/plugins.md
CHANGED
|
@@ -1,234 +1,234 @@
|
|
|
1
|
-
# プラグインのAPIの仕様
|
|
2
|
-
|
|
3
|
-
なでしこ3には、以下の二種類のプラグインがある。
|
|
4
|
-
|
|
5
|
-
- (1) なでしこ3自身で開発した[NAKO3プラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FNAKO3%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
|
|
6
|
-
- (2) JavaScriptで開発した[JSプラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FJS%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
|
|
7
|
-
|
|
8
|
-
なお、(1)のプラグインはなでしこ自身で関数を定義するだけである。
|
|
9
|
-
以下では、(2)のJavaScriptで開発したプラグインについて解説する。
|
|
10
|
-
|
|
11
|
-
## JSプラグインを利用する手順
|
|
12
|
-
|
|
13
|
-
次の2つの方法で利用ができる。
|
|
14
|
-
|
|
15
|
-
- (1)「[取り込む構文](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8F%96%E8%BE%BC&show)」を使ってプラグインを取り込める。
|
|
16
|
-
- (2) HTMLファイル内でなでしこ本体(wnako3.js)よりも後ろで`<script src="(JSプラグイン).js">`と記述して読み込む。
|
|
17
|
-
|
|
18
|
-
なお「wnako3.js」を読み込むと、ブラウザの「navigator」オブジェクトにプロパティ「nako3」(navigator.nako3)にコンパイラのインスタンスが作成される。
|
|
19
|
-
|
|
20
|
-
## プラグイン側の実装方法
|
|
21
|
-
|
|
22
|
-
プラグインの実体は、Objectである。
|
|
23
|
-
|
|
24
|
-
```js
|
|
25
|
-
{
|
|
26
|
-
'定数名': { 定義 },
|
|
27
|
-
'命令名': { 定義 },
|
|
28
|
-
...
|
|
29
|
-
}
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### 定義:関数
|
|
33
|
-
|
|
34
|
-
プラグインの実体は、Object。実際の関数定義は、fnプロパティに行う。実際の関数の引数に加えて、システムを表すsysを用意する。
|
|
35
|
-
|
|
36
|
-
```js
|
|
37
|
-
{
|
|
38
|
-
'関数名': { // @関数の説明 // @ヨミガナ
|
|
39
|
-
type: 'func', // 関数であれば func にする
|
|
40
|
-
josi: [['を', 'から'], ['まで']], // 助詞を配列で宣言する (可変長引数として扱いたい助詞は末尾で宣言する)
|
|
41
|
-
isVariableJosi: false, // 末尾の助詞を可変長引数として扱う場合 true にする
|
|
42
|
-
uses: [], // この関数から別の関数を呼ぶ場合に記述する // (TODO: #282)
|
|
43
|
-
asyncFn: false, // async関数定義かPromiseを返す関数を定義する場合 true にする (参照: #1154)
|
|
44
|
-
fn: function (aFrom, aTo, sys) { ... }, // 関数の実態
|
|
45
|
-
return_none: false // 戻り値を返すかどうか
|
|
46
|
-
},
|
|
47
|
-
...
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
なお、コメントを記述した場合、`npm run build:command`を実行すると自動的にコマンドマニュアルが生成される。
|
|
52
|
-
|
|
53
|
-
### 定義:定数
|
|
54
|
-
|
|
55
|
-
typeプロパティに「const」を指定して、valueプロパティに値を指定する。
|
|
56
|
-
|
|
57
|
-
```js
|
|
58
|
-
{ type: 'const', value: 100 } // @ヨミガナ
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 定義:変数
|
|
62
|
-
|
|
63
|
-
typeプロパティに「var」を指定して、valueプロパティに値を指定する。
|
|
64
|
-
|
|
65
|
-
```js
|
|
66
|
-
{ type: 'var', value: 100 } // @ヨミガナ
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### プラグインの自動登録
|
|
70
|
-
|
|
71
|
-
プラグインの末尾に以下のコードを仕込むとscriptタグで読み込んだときシステムに登録できる。
|
|
72
|
-
|
|
73
|
-
```js
|
|
74
|
-
if (typeof (navigator) === 'object') {
|
|
75
|
-
navigator.nako3.addPluginObject(プラグイン名, オブジェクト)
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## 初期化メソッド
|
|
80
|
-
|
|
81
|
-
以下のようなエントリを用意しておくと、プラグインを取り込み、初回実行するときに初期化メソッドが実行される。
|
|
82
|
-
(ただし、プラグイン取り込み時に、 `!{プラグイン名}:初期化` というメソッド名にリネームされる)
|
|
83
|
-
|
|
84
|
-
```js
|
|
85
|
-
{
|
|
86
|
-
'初期化': {
|
|
87
|
-
type: 'func',
|
|
88
|
-
josi: [],
|
|
89
|
-
fn: function (sys) { ... }
|
|
90
|
-
}
|
|
91
|
-
...
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## クリアメソッド
|
|
96
|
-
|
|
97
|
-
以下のようなエントリを用意しておくと、プログラム終了時(あるいはクリア時)にプラグインごとプログラムが実行される。
|
|
98
|
-
|
|
99
|
-
```js
|
|
100
|
-
{
|
|
101
|
-
'!クリア': {
|
|
102
|
-
type: 'func',
|
|
103
|
-
josi: [],
|
|
104
|
-
fn: function (sys) { ... }
|
|
105
|
-
}
|
|
106
|
-
...
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## プラグイン側からシステム変数へのアクセス
|
|
111
|
-
|
|
112
|
-
関数を定義したとき、プラグイン関数側からシステムにアクセスしなければならない場合がある。
|
|
113
|
-
以下は引数のない関数を定義した例だが、必ず必要とされる引数の末尾に実行したシステムのthisを保持するオブジェクトが渡される。
|
|
114
|
-
このオブジェクトを参照することで、システム変数にアクセスできる。
|
|
115
|
-
|
|
116
|
-
```js
|
|
117
|
-
'xxx': {
|
|
118
|
-
type: 'func',
|
|
119
|
-
josi: [],
|
|
120
|
-
fn: function (sys) {
|
|
121
|
-
console.log(sys)
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
例えば、なでしこで管理されている変数「A」にアクセスしたいときは、以下のようなコードを記述する。なお、ローカル変数を参照するときpure: trueの関数は正しく動作しない。
|
|
127
|
-
|
|
128
|
-
```js
|
|
129
|
-
'xxx': {
|
|
130
|
-
type: 'func',
|
|
131
|
-
josi: [],
|
|
132
|
-
fn: function (sys) {
|
|
133
|
-
const a = sys.__findVar('A')
|
|
134
|
-
console.log(a)
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
そのほかに、なでしこ側で定義した関数「HOGE」を実行したいときは、以下のように記述する。
|
|
140
|
-
|
|
141
|
-
```js
|
|
142
|
-
'xxx': {
|
|
143
|
-
type: 'func',
|
|
144
|
-
josi: [],
|
|
145
|
-
fn: function (sys) {
|
|
146
|
-
const result = sys.__exec('HOGE', [arg1, arg2, arg3, sys])
|
|
147
|
-
console.log(result)
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
また、関数の引数に与える、sysはなでしこ自身を表す。
|
|
153
|
-
もし、代入的関数呼び出し(setter)であれば、sys.isSetterにtrueの値が入る。
|
|
154
|
-
|
|
155
|
-
なお、プラグインでは、以下のメソッドが使えるようになる。(すべてsrc/plugin_system.jsで定義されている。システム関数の初期化時に、これらの関数が追加される)
|
|
156
|
-
|
|
157
|
-
- sys.__findVar(name)
|
|
158
|
-
- sys.__exec(name, params)
|
|
159
|
-
|
|
160
|
-
関数内で、システム・グローバル変数にアクセスするには、``sys.__v0['変数名']``でアクセスできる。
|
|
161
|
-
|
|
162
|
-
なお、最後の助詞を可変長引数として扱う場合、システム変数は末尾の引数の末尾の要素として挿入される。
|
|
163
|
-
|
|
164
|
-
```js
|
|
165
|
-
'xxx': {
|
|
166
|
-
type: 'func',
|
|
167
|
-
josi: [['は'], ['で']],
|
|
168
|
-
isVariableJosi: true,
|
|
169
|
-
fn: function (a, ...b) {
|
|
170
|
-
const sys = b.pop()
|
|
171
|
-
const result = sys.__exec('HOGE', [arg1, arg2, arg3, sys])
|
|
172
|
-
console.log(result)
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## 非同期処理に対する関数を作る場合
|
|
178
|
-
|
|
179
|
-
v3.3で`asyncFn`が導入された(参照: #1154)。このプロパティを`true`に設定した場合、関数は非同期処理で実行される。
|
|
180
|
-
つまり、この関数を呼び出す前に、自動的に`await`が指定される。そのため、`asyncFn`を`true`とした場合、Promiseのオブジェクトを返すようにする。
|
|
181
|
-
|
|
182
|
-
```js
|
|
183
|
-
'xxx': {
|
|
184
|
-
type: 'func',
|
|
185
|
-
josi: [['で']],
|
|
186
|
-
asyncFn: true, // 非同期処理であることを明示
|
|
187
|
-
fn: function (msec, sys) {
|
|
188
|
-
// asyncFnをtrueにしたら、必ずPromiseを返すようにする
|
|
189
|
-
return new Promise((resolve, _reject) => {
|
|
190
|
-
setTimeout(()=>{
|
|
191
|
-
resolve()
|
|
192
|
-
}, msec)
|
|
193
|
-
})
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
あるいは、以下のように、`async` をつけて関数を定義する。このように書くと、自動的にPromiseオブジェクトを返す。
|
|
199
|
-
|
|
200
|
-
```js
|
|
201
|
-
'xxx': {
|
|
202
|
-
type: 'func',
|
|
203
|
-
josi: [['で']],
|
|
204
|
-
asyncFn: true, // 非同期処理であることを明示
|
|
205
|
-
fn: async function (msec, sys) {
|
|
206
|
-
// ここで非同期処理
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
この機能の追加により、`「!非同期モード」`や`「逐次実行」`の利用は非推奨となった。
|
|
212
|
-
|
|
213
|
-
## (非推奨) 非同期モードに対応した関数を作る場合
|
|
214
|
-
|
|
215
|
-
v3.2.22で導入された非同期モードの利用は非推奨となったが、非同期モードに対応した関数を作るには、以下のように記述する。
|
|
216
|
-
なお、今後、非同期関数を利用するには、上記asyncFnを使うこと。
|
|
217
|
-
|
|
218
|
-
```js
|
|
219
|
-
fn: function (n, sys) {
|
|
220
|
-
if (sys.__genMode == '非同期モード') {
|
|
221
|
-
sys.async = true // 非同期モードを使うことを明示
|
|
222
|
-
setTimeout(() => {
|
|
223
|
-
sys.nextAsync(sys) // ここで非同期処理が完了した時にこの関数を呼ぶ
|
|
224
|
-
}, n * 1000)
|
|
225
|
-
} else {
|
|
226
|
-
// 非同期モードに対応していない時の処理
|
|
227
|
-
throw new Error('「!非同期モード」で使ってください')
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## マニュアルを自動生成する
|
|
233
|
-
|
|
234
|
-
- [doc/docgen.md](docgen.md) にマニュアル自動生成のスクリプトが紹介されている。
|
|
1
|
+
# プラグインのAPIの仕様
|
|
2
|
+
|
|
3
|
+
なでしこ3には、以下の二種類のプラグインがある。
|
|
4
|
+
|
|
5
|
+
- (1) なでしこ3自身で開発した[NAKO3プラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FNAKO3%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
|
|
6
|
+
- (2) JavaScriptで開発した[JSプラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FJS%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
|
|
7
|
+
|
|
8
|
+
なお、(1)のプラグインはなでしこ自身で関数を定義するだけである。
|
|
9
|
+
以下では、(2)のJavaScriptで開発したプラグインについて解説する。
|
|
10
|
+
|
|
11
|
+
## JSプラグインを利用する手順
|
|
12
|
+
|
|
13
|
+
次の2つの方法で利用ができる。
|
|
14
|
+
|
|
15
|
+
- (1)「[取り込む構文](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8F%96%E8%BE%BC&show)」を使ってプラグインを取り込める。
|
|
16
|
+
- (2) HTMLファイル内でなでしこ本体(wnako3.js)よりも後ろで`<script src="(JSプラグイン).js">`と記述して読み込む。
|
|
17
|
+
|
|
18
|
+
なお「wnako3.js」を読み込むと、ブラウザの「navigator」オブジェクトにプロパティ「nako3」(navigator.nako3)にコンパイラのインスタンスが作成される。
|
|
19
|
+
|
|
20
|
+
## プラグイン側の実装方法
|
|
21
|
+
|
|
22
|
+
プラグインの実体は、Objectである。
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
{
|
|
26
|
+
'定数名': { 定義 },
|
|
27
|
+
'命令名': { 定義 },
|
|
28
|
+
...
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 定義:関数
|
|
33
|
+
|
|
34
|
+
プラグインの実体は、Object。実際の関数定義は、fnプロパティに行う。実際の関数の引数に加えて、システムを表すsysを用意する。
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
{
|
|
38
|
+
'関数名': { // @関数の説明 // @ヨミガナ
|
|
39
|
+
type: 'func', // 関数であれば func にする
|
|
40
|
+
josi: [['を', 'から'], ['まで']], // 助詞を配列で宣言する (可変長引数として扱いたい助詞は末尾で宣言する)
|
|
41
|
+
isVariableJosi: false, // 末尾の助詞を可変長引数として扱う場合 true にする
|
|
42
|
+
uses: [], // この関数から別の関数を呼ぶ場合に記述する // (TODO: #282)
|
|
43
|
+
asyncFn: false, // async関数定義かPromiseを返す関数を定義する場合 true にする (参照: #1154)
|
|
44
|
+
fn: function (aFrom, aTo, sys) { ... }, // 関数の実態
|
|
45
|
+
return_none: false // 戻り値を返すかどうか
|
|
46
|
+
},
|
|
47
|
+
...
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
なお、コメントを記述した場合、`npm run build:command`を実行すると自動的にコマンドマニュアルが生成される。
|
|
52
|
+
|
|
53
|
+
### 定義:定数
|
|
54
|
+
|
|
55
|
+
typeプロパティに「const」を指定して、valueプロパティに値を指定する。
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
{ type: 'const', value: 100 } // @ヨミガナ
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 定義:変数
|
|
62
|
+
|
|
63
|
+
typeプロパティに「var」を指定して、valueプロパティに値を指定する。
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
{ type: 'var', value: 100 } // @ヨミガナ
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### プラグインの自動登録
|
|
70
|
+
|
|
71
|
+
プラグインの末尾に以下のコードを仕込むとscriptタグで読み込んだときシステムに登録できる。
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
if (typeof (navigator) === 'object') {
|
|
75
|
+
navigator.nako3.addPluginObject(プラグイン名, オブジェクト)
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 初期化メソッド
|
|
80
|
+
|
|
81
|
+
以下のようなエントリを用意しておくと、プラグインを取り込み、初回実行するときに初期化メソッドが実行される。
|
|
82
|
+
(ただし、プラグイン取り込み時に、 `!{プラグイン名}:初期化` というメソッド名にリネームされる)
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
{
|
|
86
|
+
'初期化': {
|
|
87
|
+
type: 'func',
|
|
88
|
+
josi: [],
|
|
89
|
+
fn: function (sys) { ... }
|
|
90
|
+
}
|
|
91
|
+
...
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## クリアメソッド
|
|
96
|
+
|
|
97
|
+
以下のようなエントリを用意しておくと、プログラム終了時(あるいはクリア時)にプラグインごとプログラムが実行される。
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
{
|
|
101
|
+
'!クリア': {
|
|
102
|
+
type: 'func',
|
|
103
|
+
josi: [],
|
|
104
|
+
fn: function (sys) { ... }
|
|
105
|
+
}
|
|
106
|
+
...
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## プラグイン側からシステム変数へのアクセス
|
|
111
|
+
|
|
112
|
+
関数を定義したとき、プラグイン関数側からシステムにアクセスしなければならない場合がある。
|
|
113
|
+
以下は引数のない関数を定義した例だが、必ず必要とされる引数の末尾に実行したシステムのthisを保持するオブジェクトが渡される。
|
|
114
|
+
このオブジェクトを参照することで、システム変数にアクセスできる。
|
|
115
|
+
|
|
116
|
+
```js
|
|
117
|
+
'xxx': {
|
|
118
|
+
type: 'func',
|
|
119
|
+
josi: [],
|
|
120
|
+
fn: function (sys) {
|
|
121
|
+
console.log(sys)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
例えば、なでしこで管理されている変数「A」にアクセスしたいときは、以下のようなコードを記述する。なお、ローカル変数を参照するときpure: trueの関数は正しく動作しない。
|
|
127
|
+
|
|
128
|
+
```js
|
|
129
|
+
'xxx': {
|
|
130
|
+
type: 'func',
|
|
131
|
+
josi: [],
|
|
132
|
+
fn: function (sys) {
|
|
133
|
+
const a = sys.__findVar('A')
|
|
134
|
+
console.log(a)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
そのほかに、なでしこ側で定義した関数「HOGE」を実行したいときは、以下のように記述する。
|
|
140
|
+
|
|
141
|
+
```js
|
|
142
|
+
'xxx': {
|
|
143
|
+
type: 'func',
|
|
144
|
+
josi: [],
|
|
145
|
+
fn: function (sys) {
|
|
146
|
+
const result = sys.__exec('HOGE', [arg1, arg2, arg3, sys])
|
|
147
|
+
console.log(result)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
また、関数の引数に与える、sysはなでしこ自身を表す。
|
|
153
|
+
もし、代入的関数呼び出し(setter)であれば、sys.isSetterにtrueの値が入る。
|
|
154
|
+
|
|
155
|
+
なお、プラグインでは、以下のメソッドが使えるようになる。(すべてsrc/plugin_system.jsで定義されている。システム関数の初期化時に、これらの関数が追加される)
|
|
156
|
+
|
|
157
|
+
- sys.__findVar(name)
|
|
158
|
+
- sys.__exec(name, params)
|
|
159
|
+
|
|
160
|
+
関数内で、システム・グローバル変数にアクセスするには、``sys.__v0['変数名']``でアクセスできる。
|
|
161
|
+
|
|
162
|
+
なお、最後の助詞を可変長引数として扱う場合、システム変数は末尾の引数の末尾の要素として挿入される。
|
|
163
|
+
|
|
164
|
+
```js
|
|
165
|
+
'xxx': {
|
|
166
|
+
type: 'func',
|
|
167
|
+
josi: [['は'], ['で']],
|
|
168
|
+
isVariableJosi: true,
|
|
169
|
+
fn: function (a, ...b) {
|
|
170
|
+
const sys = b.pop()
|
|
171
|
+
const result = sys.__exec('HOGE', [arg1, arg2, arg3, sys])
|
|
172
|
+
console.log(result)
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## 非同期処理に対する関数を作る場合
|
|
178
|
+
|
|
179
|
+
v3.3で`asyncFn`が導入された(参照: #1154)。このプロパティを`true`に設定した場合、関数は非同期処理で実行される。
|
|
180
|
+
つまり、この関数を呼び出す前に、自動的に`await`が指定される。そのため、`asyncFn`を`true`とした場合、Promiseのオブジェクトを返すようにする。
|
|
181
|
+
|
|
182
|
+
```js
|
|
183
|
+
'xxx': {
|
|
184
|
+
type: 'func',
|
|
185
|
+
josi: [['で']],
|
|
186
|
+
asyncFn: true, // 非同期処理であることを明示
|
|
187
|
+
fn: function (msec, sys) {
|
|
188
|
+
// asyncFnをtrueにしたら、必ずPromiseを返すようにする
|
|
189
|
+
return new Promise((resolve, _reject) => {
|
|
190
|
+
setTimeout(()=>{
|
|
191
|
+
resolve()
|
|
192
|
+
}, msec)
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
あるいは、以下のように、`async` をつけて関数を定義する。このように書くと、自動的にPromiseオブジェクトを返す。
|
|
199
|
+
|
|
200
|
+
```js
|
|
201
|
+
'xxx': {
|
|
202
|
+
type: 'func',
|
|
203
|
+
josi: [['で']],
|
|
204
|
+
asyncFn: true, // 非同期処理であることを明示
|
|
205
|
+
fn: async function (msec, sys) {
|
|
206
|
+
// ここで非同期処理
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
この機能の追加により、`「!非同期モード」`や`「逐次実行」`の利用は非推奨となった。
|
|
212
|
+
|
|
213
|
+
## (非推奨) 非同期モードに対応した関数を作る場合
|
|
214
|
+
|
|
215
|
+
v3.2.22で導入された非同期モードの利用は非推奨となったが、非同期モードに対応した関数を作るには、以下のように記述する。
|
|
216
|
+
なお、今後、非同期関数を利用するには、上記asyncFnを使うこと。
|
|
217
|
+
|
|
218
|
+
```js
|
|
219
|
+
fn: function (n, sys) {
|
|
220
|
+
if (sys.__genMode == '非同期モード') {
|
|
221
|
+
sys.async = true // 非同期モードを使うことを明示
|
|
222
|
+
setTimeout(() => {
|
|
223
|
+
sys.nextAsync(sys) // ここで非同期処理が完了した時にこの関数を呼ぶ
|
|
224
|
+
}, n * 1000)
|
|
225
|
+
} else {
|
|
226
|
+
// 非同期モードに対応していない時の処理
|
|
227
|
+
throw new Error('「!非同期モード」で使ってください')
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## マニュアルを自動生成する
|
|
233
|
+
|
|
234
|
+
- [doc/docgen.md](docgen.md) にマニュアル自動生成のスクリプトが紹介されている。
|
package/doc/release.md
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# なでしこv3のリリース手順
|
|
2
|
-
|
|
3
|
-
なでしこv3の最新版を、Webにアップするまでの備忘録です。いつも、手順飛ばしてしまうので、忘れないようにメモ。特に、npm publishの部分とか。
|
|
4
|
-
|
|
5
|
-
## 1.GitHubのリリース機能を使う
|
|
6
|
-
|
|
7
|
-
ただし、リリース前(コミット前)には必ずビルドとテストを実行して、テストが成功するか確認する。
|
|
8
|
-
|
|
9
|
-
```shell
|
|
10
|
-
npm run build
|
|
11
|
-
npm test
|
|
12
|
-
npm run test:all
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## 2.ファイルのビルドについて
|
|
16
|
-
|
|
17
|
-
リリース用にwebpackでパックしたソースを生成する(/releaseに生成物が作られる)。
|
|
18
|
-
|
|
19
|
-
```shell
|
|
20
|
-
npm run build
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
必要に応じて対応ブラウザを更新する。(以前は`npm run build`に含めていたが、OSによって異なる値を出力するため、毎回実行する必要はないことから省略された #1211)
|
|
24
|
-
|
|
25
|
-
```shell
|
|
26
|
-
npm run build:browsers
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## 3.npmにpublish
|
|
30
|
-
|
|
31
|
-
package.jsonのバージョン番号を更新したことを確認する。npm publishでnpmに公開する。
|
|
32
|
-
|
|
33
|
-
```shell
|
|
34
|
-
npm publish
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 4.Webにアップロード
|
|
38
|
-
|
|
39
|
-
Webの簡易エディタを最新版に更新する。
|
|
40
|
-
|
|
41
|
-
- [なでしこ3のサイト](https://nadesi.com/doc3/)
|
|
42
|
-
- [マニュアル](https://nadesi.com/doc3/)
|
|
43
|
-
- [貯蔵庫](https://n3s.nadesi.com/)
|
|
44
|
-
|
|
45
|
-
## 5.Windowsバイナリ版のアップロード
|
|
46
|
-
|
|
47
|
-
Windows用のリポジトリ生成のためにファイルをnadesiko3win32へコピーする。ただし、事前準備として、 `git clone` でnadesiko3win32のリポジトリを取得しておく必要がある。
|
|
48
|
-
|
|
49
|
-
```shell
|
|
50
|
-
npm run build:win32
|
|
51
|
-
bash ./win32.bash
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
nadesiko3win32のフォルダに移動。
|
|
55
|
-
|
|
56
|
-
```shell
|
|
57
|
-
cd ../nadesiko3win32
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
なお、Windowsで実行してモジュールの最新版を取得。
|
|
61
|
-
|
|
62
|
-
```shell
|
|
63
|
-
nodejs\npm install --production
|
|
64
|
-
nodejs\npm audit fix
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
次に、7zipでモジュールを固める。
|
|
68
|
-
|
|
69
|
-
```shell
|
|
70
|
-
bin\7z -mx=9 a node_modules.7z node_modules
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
最後にGitへアップする。
|
|
74
|
-
|
|
75
|
-
```shell
|
|
76
|
-
git commit -a
|
|
77
|
-
git push
|
|
78
|
-
```
|
|
79
|
-
|
|
1
|
+
# なでしこv3のリリース手順
|
|
2
|
+
|
|
3
|
+
なでしこv3の最新版を、Webにアップするまでの備忘録です。いつも、手順飛ばしてしまうので、忘れないようにメモ。特に、npm publishの部分とか。
|
|
4
|
+
|
|
5
|
+
## 1.GitHubのリリース機能を使う
|
|
6
|
+
|
|
7
|
+
ただし、リリース前(コミット前)には必ずビルドとテストを実行して、テストが成功するか確認する。
|
|
8
|
+
|
|
9
|
+
```shell
|
|
10
|
+
npm run build
|
|
11
|
+
npm test
|
|
12
|
+
npm run test:all
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 2.ファイルのビルドについて
|
|
16
|
+
|
|
17
|
+
リリース用にwebpackでパックしたソースを生成する(/releaseに生成物が作られる)。
|
|
18
|
+
|
|
19
|
+
```shell
|
|
20
|
+
npm run build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
必要に応じて対応ブラウザを更新する。(以前は`npm run build`に含めていたが、OSによって異なる値を出力するため、毎回実行する必要はないことから省略された #1211)
|
|
24
|
+
|
|
25
|
+
```shell
|
|
26
|
+
npm run build:browsers
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 3.npmにpublish
|
|
30
|
+
|
|
31
|
+
package.jsonのバージョン番号を更新したことを確認する。npm publishでnpmに公開する。
|
|
32
|
+
|
|
33
|
+
```shell
|
|
34
|
+
npm publish
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 4.Webにアップロード
|
|
38
|
+
|
|
39
|
+
Webの簡易エディタを最新版に更新する。
|
|
40
|
+
|
|
41
|
+
- [なでしこ3のサイト](https://nadesi.com/doc3/)
|
|
42
|
+
- [マニュアル](https://nadesi.com/doc3/)
|
|
43
|
+
- [貯蔵庫](https://n3s.nadesi.com/)
|
|
44
|
+
|
|
45
|
+
## 5.Windowsバイナリ版のアップロード
|
|
46
|
+
|
|
47
|
+
Windows用のリポジトリ生成のためにファイルをnadesiko3win32へコピーする。ただし、事前準備として、 `git clone` でnadesiko3win32のリポジトリを取得しておく必要がある。
|
|
48
|
+
|
|
49
|
+
```shell
|
|
50
|
+
npm run build:win32
|
|
51
|
+
bash ./win32.bash
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
nadesiko3win32のフォルダに移動。
|
|
55
|
+
|
|
56
|
+
```shell
|
|
57
|
+
cd ../nadesiko3win32
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
なお、Windowsで実行してモジュールの最新版を取得。
|
|
61
|
+
|
|
62
|
+
```shell
|
|
63
|
+
nodejs\npm install --production
|
|
64
|
+
nodejs\npm audit fix
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
次に、7zipでモジュールを固める。
|
|
68
|
+
|
|
69
|
+
```shell
|
|
70
|
+
bin\7z -mx=9 a node_modules.7z node_modules
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
最後にGitへアップする。
|
|
74
|
+
|
|
75
|
+
```shell
|
|
76
|
+
git commit -a
|
|
77
|
+
git push
|
|
78
|
+
```
|
|
79
|
+
|