diff --git a/package.json b/package.json index 97feaf3..6b2121b 100644 --- a/package.json +++ b/package.json @@ -4,22 +4,9 @@ "devDependencies": { "@angular/compiler": "^7.2.13", "@angular/compiler-cli": "^7.2.14", - "@angular/core": "^7.2.13", - "@angular/language-service": "^7.2.13", - "@angular/router": "^7.2.13", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", "@progress-nativechat/nativescript-nativechat": "2.0.3", "@stencil/core": "^0.18.1", "@types/autoprefixer": "^9.4.0", - "@types/babel__core": "^7.1.1", - "@types/babel__generator": "^7.0.2", - "@types/babel__template": "^7.0.2", - "@types/babel__traverse": "^7.0.6", "@types/chai": "^4.1.7", "@types/csso": "^3.5.1", "@types/enhanced-resolve": "^3.0.6", diff --git a/packages/nger-compiler/lib/index.ts b/packages/nger-compiler/lib/index.ts index 5166ca5..c4a5f18 100644 --- a/packages/nger-compiler/lib/index.ts +++ b/packages/nger-compiler/lib/index.ts @@ -3,7 +3,7 @@ import { StaticProvider } from 'nger-di' import { NgerCompilerImage } from './assets/image' import { NgerCompilerUglify } from './ts/uglify' import { NgerCompilerBabel } from './ts/babel' -import { TraverVisitor, Resolver } from 'nger-core' +import { Resolver } from 'nger-core' import { NgerCompilerTypescript } from './ts/typescript' import { NgerCompilerRollup } from './ts/rollup' import { NgerCompilerNgTemplate } from './html/ng' @@ -12,7 +12,6 @@ import { NgerCompilerNgMetadata } from './helper/ng_metadata' import { controllerPropertyTransformerFactory, hasPropertyMetadata } from './transformer_factorys/controller' import { WATCH_TASK, Task } from './tokens/watch_task' import { NgerCompilerBootstrap, metadataCache, hasHandlerFileCache, templateCache } from './bootstrap' -import { controllerVisitor } from './visitors/controller' import { NgModuleBootstrap } from 'nger-core' import { NgerUtil } from 'nger-util' export { @@ -41,11 +40,6 @@ const provides: StaticProvider[] = [ deps: [NgerUtil], multi: true }, - { - provide: TraverVisitor, - useValue: controllerVisitor, - multi: true - }, { provide: NgerCompilerNgMetadata, useClass: NgerCompilerNgMetadata, @@ -82,7 +76,6 @@ const provides: StaticProvider[] = [ useClass: NgerCompilerBabel, deps: [ NgerCompilerTypescript, - TraverVisitor, Resolver ] } diff --git a/packages/nger-compiler/lib/ts/babel.ts b/packages/nger-compiler/lib/ts/babel.ts index 6058ab4..d40bbed 100644 --- a/packages/nger-compiler/lib/ts/babel.ts +++ b/packages/nger-compiler/lib/ts/babel.ts @@ -1,41 +1,34 @@ -import traverse, { Visitor } from '@babel/traverse'; -import generator from '@babel/generator'; -import { parse } from '@babel/parser'; import { Resolver } from 'nger-core' import fs from 'fs-extra'; import { Injectable } from 'nger-core'; import { NgerCompilerTypescript } from 'nger-compiler'; -import { mergeVisitors } from './util' import ts from 'typescript'; +const {transformSync} = require('@babel/core') @Injectable() export class NgerCompilerBabel { - visitor: Visitor; constructor( public ts: NgerCompilerTypescript, - public visitors: Visitor[], public resolver: Resolver - ) { - this.visitor = mergeVisitors(this.visitors, this) - } + ) {} getFileContent(path: string, config: ts.TranspileOptions = {}) { - // 如果文件或目录存在 - let code = fs.readFileSync(path).toString('utf8') - if (path.endsWith('.ts') || path.endsWith('tsx')) { - code = this.ts.compile(code, config) - } - return code; - } - compile(from: string, config: ts.TranspileOptions = {}) { try{ - // 如果已经处理过了则忽略 - // 拿到文件内容 - let code = this.getFileContent(from, config); - // 解析 - const ast = parse(code, {}); - // 替换处理 - traverse(ast, this.visitor || {}); - code = generator(ast).code; + // 如果文件或目录存在 + let code = fs.readFileSync(path).toString('utf8') + if (path.endsWith('.ts') || path.endsWith('tsx')) { + code = this.ts.compile(code, config) + } return code; }catch(e){} } + compile(from: string, config: ts.TranspileOptions = {}) { + // 如果已经处理过了则忽略 + // 拿到文件内容 + let code = this.getFileContent(from, config); + if(!code){ + code = ``; + } + code = transformSync(code, {}).code + return code; + // 解析 + } } diff --git a/packages/nger-compiler/lib/ts/typescript.ts b/packages/nger-compiler/lib/ts/typescript.ts index 60281f8..7ea6d53 100644 --- a/packages/nger-compiler/lib/ts/typescript.ts +++ b/packages/nger-compiler/lib/ts/typescript.ts @@ -10,7 +10,10 @@ export class NgerCompilerTypescript { constructor() { } compile(content: string, config: ts.TranspileOptions = {}): string { config = { - compilerOptions: this.options, + compilerOptions: { + ...this.options, + target: ts.ScriptTarget.ES5 + }, ...config, }; const output = ts.transpileModule(content, config) diff --git a/packages/nger-compiler/lib/ts/util.ts b/packages/nger-compiler/lib/ts/util.ts deleted file mode 100644 index d8b1e8b..0000000 --- a/packages/nger-compiler/lib/ts/util.ts +++ /dev/null @@ -1,32 +0,0 @@ - -import { Visitor } from '@babel/traverse'; - -export function mergeVisitors(visitors: Visitor[], that: any): Visitor { - if (visitors && visitors.length > 0) { - if (visitors.length === 1) { - return visitors[0]; - } else { - const newVisitor: Visitor = {}; - visitors.map(visit => { - Object.keys(visit).map(key => { - // 拿到一个方法 - const oldMethod = newVisitor[key]; - const mth = visit[key].bind(that); - let newMethod: any; - // 如果老的方法存在 - if (oldMethod) { - newMethod = (...args: any[]) => { - oldMethod(...args) - mth(...args) - } - } else { - newMethod = mth; - } - newVisitor[key] = newMethod; - }); - }); - return newVisitor; - } - } - return {}; -} diff --git a/packages/nger-compiler/lib/visitors/controller.ts b/packages/nger-compiler/lib/visitors/controller.ts deleted file mode 100644 index 61c1681..0000000 --- a/packages/nger-compiler/lib/visitors/controller.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Visitor, NodePath } from '@babel/traverse'; -import t from '@babel/types'; - -export const controllerVisitor: Visitor = { - // 转义Controller里面的Get/Post等,删除Injector - ClassMethod(path: NodePath) { } -} - diff --git a/packages/nger-core/lib/sdk/index.ts b/packages/nger-core/lib/sdk/index.ts index 8ccff8a..944aae6 100644 --- a/packages/nger-core/lib/sdk/index.ts +++ b/packages/nger-core/lib/sdk/index.ts @@ -4,7 +4,6 @@ export * from './nger-config'; export * from './history'; export * from './file_system'; export * from './resolver'; -export * from './traverse'; export * from './router'; export * from './cache'; export * from './h'; diff --git a/packages/nger-core/lib/sdk/traverse.ts b/packages/nger-core/lib/sdk/traverse.ts index 9974b0e..0da9e9c 100644 --- a/packages/nger-core/lib/sdk/traverse.ts +++ b/packages/nger-core/lib/sdk/traverse.ts @@ -1,3 +1,3 @@ -import { Visitor } from '@babel/traverse'; -import { InjectionToken } from 'nger-di'; -export const TraverVisitor = new InjectionToken(`TraverVisitor`) \ No newline at end of file +// import { Visitor } from '@babel/traverse'; +// import { InjectionToken } from 'nger-di'; +// export const TraverVisitor = new InjectionToken(`TraverVisitor`) \ No newline at end of file diff --git a/packages/nger-provider-typescript/lib/babel.ts b/packages/nger-provider-typescript/lib/babel.ts index f69c8ce..4b56ecd 100644 --- a/packages/nger-provider-typescript/lib/babel.ts +++ b/packages/nger-provider-typescript/lib/babel.ts @@ -1,11 +1,8 @@ import * as t from '@babel/types'; -import template from '@babel/template'; -import core from '@babel/core'; import traverse, { NodePath } from '@babel/traverse'; import generator from '@babel/generator'; import { parse } from '@babel/parser'; -import tpl from './babel_template'; -import { join, dirname, relative, extname } from 'path' +import { join, dirname, extname } from 'path' const root = process.cwd(); import fs from 'fs-extra'; import { Injectable } from 'nger-core'; diff --git a/packages/nger-webpack-admin/lib/app_init.ts b/packages/nger-webpack-admin/lib/app_init.ts index cceac23..3430f7e 100644 --- a/packages/nger-webpack-admin/lib/app_init.ts +++ b/packages/nger-webpack-admin/lib/app_init.ts @@ -6,7 +6,6 @@ import { join } from 'path' import HtmlWebpackPlugin from 'html-webpack-plugin'; import webpack, { Configuration } from 'webpack' const StatsPlugin = require('stats-webpack-plugin'); - export function init(injector: Injector) { const manager = injector.get(NgerWebpackManager) return () => { @@ -28,7 +27,7 @@ export function init(injector: Injector) { main: [join(root, `.temp/addon/${name}/admin.js`)] }, resolve: { - extensions: ['.ts', '.tsx', '.js', '.jsx'], + extensions: ['.js', '.jsx'], mainFields: ['main:h5', 'main', 'module'], symlinks: true, modules: [join(root, 'node_modules'), join(root, 'packages')] @@ -53,19 +52,7 @@ export function init(injector: Injector) { ], output: output, module: { - rules: [{ - test: /\.tsx?$/, - enforce: 'pre', - use: [ - { - loader: 'ts-loader', - options: { - transpileOnly: true, - configFile: 'tsconfig.json' - } - } - ] - }, ...assetsRules] + rules: [...assetsRules] }, performance: { hints: 'warning', diff --git a/packages/nger-webpack-admin/lib/index.ts b/packages/nger-webpack-admin/lib/index.ts index 13215bf..832b8bc 100644 --- a/packages/nger-webpack-admin/lib/index.ts +++ b/packages/nger-webpack-admin/lib/index.ts @@ -7,4 +7,4 @@ export default [{ useFactory: init, deps: [Injector], multi: true -}] \ No newline at end of file +}]; \ No newline at end of file diff --git a/packages/nger-webpack-app/lib/app_init.ts b/packages/nger-webpack-app/lib/app_init.ts index 7776989..073a094 100644 --- a/packages/nger-webpack-app/lib/app_init.ts +++ b/packages/nger-webpack-app/lib/app_init.ts @@ -6,7 +6,6 @@ import { join } from 'path' import HtmlWebpackPlugin from 'html-webpack-plugin'; import webpack, { Configuration } from 'webpack' const StatsPlugin = require('stats-webpack-plugin'); - export function init(injector: Injector) { const manager = injector.get(NgerWebpackManager) return () => { @@ -17,18 +16,16 @@ export function init(injector: Injector) { filename: '[name]_[hash].bound.js', chunkFilename: '[name]_[hash].chunk.js' } - const optimi = dev ? {} : optimization; const name = getCurrentDev(); if (!name) { throw new Error(`当前开发项目不纯在`) } - const chunks = dev ? ['main'] : ['runtime', 'vendor', 'common', 'main'] manager.options.push({ entry: { main: [join(root, `.temp/addon/${name}/app.js`)] }, resolve: { - extensions: ['.ts', '.tsx', '.js', '.jsx'], + extensions: ['.js', '.jsx'], mainFields: ['main:h5', 'main', 'module'], symlinks: true, modules: [join(root, 'node_modules'), join(root, 'packages')] @@ -48,7 +45,7 @@ export function init(injector: Injector) { cache: false, template: join(__dirname, 'index.html'), filename: 'index.html', - chunks: chunks, + chunks: ['runtime', 'vendor', 'common', 'main'], }), new webpack.WatchIgnorePlugin([ /\.d\.ts$/ @@ -76,7 +73,7 @@ export function init(injector: Injector) { maxEntrypointSize: 1700000, maxAssetSize: 1700000 }, - ...optimi + ...optimization } as Configuration) } } \ No newline at end of file diff --git a/packages/nger-webpack-pc/lib/app_init.ts b/packages/nger-webpack-pc/lib/app_init.ts index 1a71d3c..febd07e 100644 --- a/packages/nger-webpack-pc/lib/app_init.ts +++ b/packages/nger-webpack-pc/lib/app_init.ts @@ -17,18 +17,16 @@ export function init(injector: Injector) { filename: '[name]_[hash].bound.js', chunkFilename: '[name]_[hash].chunk.js' } - const optimi = dev ? {} : optimization; const name = getCurrentDev(); if (!name) { throw new Error(`当前开发项目不纯在`) } - const chunks = dev ? ['main'] : ['runtime', 'vendor', 'common', 'main'] manager.options.push({ entry: { main: [join(root, `.temp/addon/${name}/pc.js`)] }, resolve: { - extensions: ['.js', '.jsx', '.css'], + extensions: ['.js', '.jsx'], mainFields: ['main:h5', 'main', 'module'], symlinks: true, modules: [join(root, 'node_modules'), join(root, 'packages')] @@ -48,7 +46,7 @@ export function init(injector: Injector) { cache: false, template: join(__dirname, 'index.html'), filename: 'index.html', - chunks: chunks, + chunks: ['runtime', 'vendor', 'common', 'main'], }), new webpack.WatchIgnorePlugin([ /\.d\.ts$/ @@ -76,7 +74,7 @@ export function init(injector: Injector) { maxEntrypointSize: 1700000, maxAssetSize: 1700000 }, - ...optimi + ...optimization } as Configuration) } } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 58bf234..20b9d2e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -158,18 +158,6 @@ "nger-dom": [ "packages/nger-dom/lib/index.ts" ], - "@babel/core": [ - "node_modules/@types/babel__core" - ], - "@babel/generator": [ - "node_modules/@types/babel__generator" - ], - "@babel/template": [ - "node_modules/@types/babel__template" - ], - "@babel/traverse": [ - "node_modules/@types/babel__traverse" - ], "*": [ "./node_modules/*", "packages/*" diff --git a/yarn-error.log b/yarn-error.log index c454b85..d8f7463 100644 --- a/yarn-error.log +++ b/yarn-error.log @@ -36,12 +36,6 @@ npm manifest: "@angular/core": "^7.2.13", "@angular/language-service": "^7.2.13", "@angular/router": "^7.2.13", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", "@progress-nativechat/nativescript-nativechat": "2.0.3", "@stencil/core": "^0.18.1", "@types/autoprefixer": "^9.4.0",