Commit d8a0321a authored by rockyl's avatar rockyl

改用typescript编译

parent 6ae1bffd
import babel from '@babel/core';
import ts from 'typescript';
import UglifyJS from 'uglify-js';
import { divideCode } from 'zeroing-code-divider';
import { generateLibraryScriptEl, generateJsScriptEl, fillTemplate } from 'zeroing-template-fill';
......@@ -6,30 +7,22 @@ import { generateLibraryScriptEl, generateJsScriptEl, fillTemplate } from 'zeroi
* Created by rockyl on 2019-11-30.
*/
const UglifyJS = require('uglify-js');
async function compile(source, debug = false) {
const {code, map} = await babel.transformAsync(source, {
presets: [
['@babel/env', {}]
],
plugins: ["@babel/proposal-optional-chaining"],
babelrc: false,
sourceMaps: debug,
});
let output = ts.transpileModule(source, {compilerOptions: {
}});
const result = {
code,
code: output.outputText,
};
if (map) {
/*if (map) {
result.sourcemap = map.mappings;
}
}*/
return result;
}
function uglify(source){
const uglifyResult = UglifyJS.minify(source, {
});
function uglify(source) {
const uglifyResult = UglifyJS.minify(source, {});
if (!uglifyResult.error) {
return uglifyResult.code;
}
......@@ -63,11 +56,15 @@ async function pack(data, options) {
function fillTpl(data, params) {
const {options} = data;
params.scripts = params.scripts.map(item => generateJsScriptEl(item)).join('\n');
options.newTpl = fillTemplate(options.newTpl, params);
let tpl = fillTemplate(options.newTpl, params);
const newTpl = options.newTpl;
delete options.newTpl;
return newTpl;
delete options.tpl;
delete options.env;
delete options.projectxConfig;
delete options.pxEnv;
return tpl;
}
async function packData(data, {debug, packedAssets, getPackages}) {
......@@ -79,11 +76,26 @@ async function packData(data, {debug, packedAssets, getPackages}) {
newData.processes = data.processes;
newData.customs = data.customs;
delete newData.options.tpl;
deleteUnusedData(newData.processes);
console.log(TAG, 'start');
for (let view of newData.views) {
if (view.store) {
let {exp, computed} = view.store;
if (exp) {
view.store.exp = await compile(exp);
}
if (computed) {
for (let item of computed) {
if (item.script) {
item.script = await compile(item.script);
}
}
}
}
}
const {
processScriptContent,
scriptsContent,
......@@ -96,7 +108,7 @@ async function packData(data, {debug, packedAssets, getPackages}) {
});
return {
data: JSON.stringify(newData),
data: newData,
processScriptContent,
scriptsContent,
customScriptContent,
......
This diff is collapsed.
......@@ -4,7 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var babel = _interopDefault(require('@babel/core'));
var ts = _interopDefault(require('typescript'));
var UglifyJS = _interopDefault(require('uglify-js'));
var zeroingCodeDivider = require('zeroing-code-divider');
var zeroingTemplateFill = require('zeroing-template-fill');
......@@ -12,30 +13,22 @@ var zeroingTemplateFill = require('zeroing-template-fill');
* Created by rockyl on 2019-11-30.
*/
const UglifyJS = require('uglify-js');
async function compile(source, debug = false) {
const {code, map} = await babel.transformAsync(source, {
presets: [
['@babel/env', {}]
],
plugins: ["@babel/proposal-optional-chaining"],
babelrc: false,
sourceMaps: debug,
});
let output = ts.transpileModule(source, {compilerOptions: {
}});
const result = {
code,
code: output.outputText,
};
if (map) {
/*if (map) {
result.sourcemap = map.mappings;
}
}*/
return result;
}
function uglify(source){
const uglifyResult = UglifyJS.minify(source, {
});
function uglify(source) {
const uglifyResult = UglifyJS.minify(source, {});
if (!uglifyResult.error) {
return uglifyResult.code;
}
......@@ -69,11 +62,15 @@ async function pack(data, options) {
function fillTpl(data, params) {
const {options} = data;
params.scripts = params.scripts.map(item => zeroingTemplateFill.generateJsScriptEl(item)).join('\n');
options.newTpl = zeroingTemplateFill.fillTemplate(options.newTpl, params);
let tpl = zeroingTemplateFill.fillTemplate(options.newTpl, params);
const newTpl = options.newTpl;
delete options.newTpl;
return newTpl;
delete options.tpl;
delete options.env;
delete options.projectxConfig;
delete options.pxEnv;
return tpl;
}
async function packData(data, {debug, packedAssets, getPackages}) {
......@@ -85,11 +82,26 @@ async function packData(data, {debug, packedAssets, getPackages}) {
newData.processes = data.processes;
newData.customs = data.customs;
delete newData.options.tpl;
deleteUnusedData(newData.processes);
console.log(TAG, 'start');
for (let view of newData.views) {
if (view.store) {
let {exp, computed} = view.store;
if (exp) {
view.store.exp = await compile(exp);
}
if (computed) {
for (let item of computed) {
if (item.script) {
item.script = await compile(item.script);
}
}
}
}
}
const {
processScriptContent,
scriptsContent,
......@@ -102,7 +114,7 @@ async function packData(data, {debug, packedAssets, getPackages}) {
});
return {
data: JSON.stringify(newData),
data: newData,
processScriptContent,
scriptsContent,
customScriptContent,
......
This diff is collapsed.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/core'), require('zeroing-code-divider'), require('zeroing-template-fill')) :
typeof define === 'function' && define.amd ? define(['exports', '@babel/core', 'zeroing-code-divider', 'zeroing-template-fill'], factory) :
(global = global || self, factory(global['zeroing-pack'] = {}, global.babel, global.zeroingCodeDivider, global.zeroingTemplateFill));
}(this, function (exports, babel, zeroingCodeDivider, zeroingTemplateFill) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('typescript'), require('uglify-js'), require('zeroing-code-divider'), require('zeroing-template-fill')) :
typeof define === 'function' && define.amd ? define(['exports', 'typescript', 'uglify-js', 'zeroing-code-divider', 'zeroing-template-fill'], factory) :
(global = global || self, factory(global['zeroing-pack'] = {}, global.ts, global.UglifyJS, global.zeroingCodeDivider, global.zeroingTemplateFill));
}(this, function (exports, ts, UglifyJS, zeroingCodeDivider, zeroingTemplateFill) { 'use strict';
babel = babel && babel.hasOwnProperty('default') ? babel['default'] : babel;
ts = ts && ts.hasOwnProperty('default') ? ts['default'] : ts;
UglifyJS = UglifyJS && UglifyJS.hasOwnProperty('default') ? UglifyJS['default'] : UglifyJS;
/**
* Created by rockyl on 2019-11-30.
*/
const UglifyJS = require('uglify-js');
async function compile(source, debug = false) {
const {code, map} = await babel.transformAsync(source, {
presets: [
['@babel/env', {}]
],
plugins: ["@babel/proposal-optional-chaining"],
babelrc: false,
sourceMaps: debug,
});
let output = ts.transpileModule(source, {compilerOptions: {
}});
const result = {
code,
code: output.outputText,
};
if (map) {
/*if (map) {
result.sourcemap = map.mappings;
}
}*/
return result;
}
function uglify(source){
const uglifyResult = UglifyJS.minify(source, {
});
function uglify(source) {
const uglifyResult = UglifyJS.minify(source, {});
if (!uglifyResult.error) {
return uglifyResult.code;
}
......@@ -67,11 +60,15 @@
function fillTpl(data, params) {
const {options} = data;
params.scripts = params.scripts.map(item => zeroingTemplateFill.generateJsScriptEl(item)).join('\n');
options.newTpl = zeroingTemplateFill.fillTemplate(options.newTpl, params);
let tpl = zeroingTemplateFill.fillTemplate(options.newTpl, params);
const newTpl = options.newTpl;
delete options.newTpl;
return newTpl;
delete options.tpl;
delete options.env;
delete options.projectxConfig;
delete options.pxEnv;
return tpl;
}
async function packData(data, {debug, packedAssets, getPackages}) {
......@@ -83,11 +80,26 @@
newData.processes = data.processes;
newData.customs = data.customs;
delete newData.options.tpl;
deleteUnusedData(newData.processes);
console.log(TAG, 'start');
for (let view of newData.views) {
if (view.store) {
let {exp, computed} = view.store;
if (exp) {
view.store.exp = await compile(exp);
}
if (computed) {
for (let item of computed) {
if (item.script) {
item.script = await compile(item.script);
}
}
}
}
}
const {
processScriptContent,
scriptsContent,
......@@ -100,7 +112,7 @@
});
return {
data: JSON.stringify(newData),
data: newData,
processScriptContent,
scriptsContent,
customScriptContent,
......
This diff is collapsed.
......@@ -2,32 +2,25 @@
* Created by rockyl on 2019-11-30.
*/
import babel from '@babel/core';
const UglifyJS = require('uglify-js');
import ts from 'typescript';
import UglifyJS from 'uglify-js';
export async function compile(source, debug = false) {
const {code, map} = await babel.transformAsync(source, {
presets: [
['@babel/env', {}]
],
plugins: ["@babel/proposal-optional-chaining"],
babelrc: false,
sourceMaps: debug,
});
let output = ts.transpileModule(source, {compilerOptions: {
}});
const result = {
code,
code: output.outputText,
};
if (map) {
/*if (map) {
result.sourcemap = map.mappings;
}
}*/
return result;
}
export function uglify(source){
const uglifyResult = UglifyJS.minify(source, {
});
export function uglify(source) {
const uglifyResult = UglifyJS.minify(source, {});
if (!uglifyResult.error) {
return uglifyResult.code;
}
......
......@@ -30,11 +30,15 @@ export async function pack(data, options) {
export function fillTpl(data, params) {
const {options} = data;
params.scripts = params.scripts.map(item => generateJsScriptEl(item)).join('\n');
options.newTpl = fillTemplate(options.newTpl, params);
let tpl = fillTemplate(options.newTpl, params);
const newTpl = options.newTpl;
delete options.newTpl;
return newTpl;
delete options.tpl;
delete options.env;
delete options.projectxConfig;
delete options.pxEnv;
return tpl;
}
async function packData(data, {debug, packedAssets, getPackages}) {
......@@ -46,11 +50,26 @@ async function packData(data, {debug, packedAssets, getPackages}) {
newData.processes = data.processes;
newData.customs = data.customs;
delete newData.options.tpl;
deleteUnusedData(newData.processes);
console.log(TAG, 'start');
for (let view of newData.views) {
if (view.store) {
let {exp, computed} = view.store;
if (exp) {
view.store.exp = await compile(exp);
}
if (computed) {
for (let item of computed) {
if (item.script) {
item.script = await compile(item.script);
}
}
}
}
}
const {
processScriptContent,
scriptsContent,
......@@ -63,7 +82,7 @@ async function packData(data, {debug, packedAssets, getPackages}) {
});
return {
data: JSON.stringify(newData),
data: newData,
processScriptContent,
scriptsContent,
customScriptContent,
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment