Skip to content

Commit

Permalink
upd: rewrite with ts
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjiahan committed Apr 20, 2017
1 parent 863426a commit 33b4e38
Show file tree
Hide file tree
Showing 11 changed files with 1,032 additions and 555 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# IntelliJ project files
.idea
*.iml
out
gen
node_modules
*.log
test/dist/
37 changes: 20 additions & 17 deletions index.js → lib/index.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
const acorn = require('acorn');
const escodegen = require('escodegen');

module.exports = function(source) {
this.cacheable && this.cacheable();
const tree = acorn.parse(source, { sourceType: 'module' });
traverse(tree);
return escodegen.generate(tree);
};

function isObject(item) {
"use strict";
var acorn = require("acorn");
var escodegen = require("escodegen");
var isObject = function (item) {
return Object.prototype.toString.call(item) === '[object Object]';
}

};
var acornOptions = {
sourceType: 'module'
};
function traverse(input) {
if (Array.isArray(input)) {
input.forEach(item => traverse(item));
}
input.forEach(traverse);
}
else if (isObject(input)) {
for (let key in input) {
for (var key in input) {
if (typeof input[key] === 'string') {
input[key] = input[key].replace(/(\n\s+)/g, '');
}
traverse(input[key]);
else {
traverse(input[key]);
}
}
}
}
module.exports = function (source) {
this.cacheable && this.cacheable();
var tree = acorn.parse(source, acornOptions);
traverse(tree);
return escodegen.generate(tree);
};
23 changes: 14 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,31 @@
{
"name": "template-string-optimize-loader",
"version": "2.2.1",
"version": "2.2.2",
"description": "template string optimize loader module for webpack",
"main": "index.js",
"main": "lib/index.js",
"scripts": {
"test": " webpack && webpack --config webpack.config.optimize.js",
"release": "npm publish"
"lib": "tsc -p tsconfig.json",
"test": "bash ./test/test.sh",
"release": "npm run lib && npm publish"
},
"author": "chenjiahan",
"license": "ISC",
"devDependencies": {
"babel": "^6.3.26",
"babel-loader": "^6.2.1",
"babel-preset-es2015": "^6.3.13",
"webpack": "^1.12.10"
"@types/acorn": "^4.0.2",
"@types/escodegen": "^0.0.6",
"babel": "^6.23.0",
"babel-core": "^6.24.1",
"babel-loader": "^6.4.1",
"babel-preset-es2015": "^6.24.1",
"typescript": "^2.2.2",
"webpack": "^2.4.1"
},
"bugs": {
"url": "https://github.com/chenjiahan/template-string-optimize-loader/issues"
},
"homepage": "https://github.com/chenjiahan/template-string-optimize-loader#readme",
"dependencies": {
"acorn": "^4.0.9",
"acorn": "^5.0.3",
"escodegen": "^1.8.1"
}
}
30 changes: 30 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import acorn = require('acorn');
import escodegen = require('escodegen');

const isObject = (item: any): boolean =>
Object.prototype.toString.call(item) === '[object Object]';

const acornOptions = {
sourceType: 'module'
} as acorn.Options;

export = function (source: string): string {
this.cacheable && this.cacheable();
const tree = acorn.parse(source, acornOptions);
traverse(tree);
return escodegen.generate(tree);
};

function traverse(input: any): void {
if (Array.isArray(input)) {
input.forEach(traverse);
} else if (isObject(input)) {
for (let key in input) {
if (typeof input[key] === 'string') {
input[key] = input[key].replace(/(\n\s+)/g, '');
} else {
traverse(input[key]);
}
}
}
}
63 changes: 0 additions & 63 deletions test/dist/test.js

This file was deleted.

63 changes: 0 additions & 63 deletions test/dist/test.min.js

This file was deleted.

9 changes: 9 additions & 0 deletions test/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh
npm run lib

mkdir node_modules/template-string-optimize-loader
cp -r ./package.json ./node_modules/template-string-optimize-loader
cp -r ./lib ./node_modules/template-string-optimize-loader

webpack
webpack --config webpack.config.optimize.js
25 changes: 25 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "lib",
"isolatedModules": false,
"experimentalDecorators": true,
"noImplicitAny": true,
"removeComments": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true,
"types": [
"acorn",
"escodegen"
],
"lib": [
"es2015"
]
},
"include": [
"./src/*.ts"
],
"compileOnSave": false
}
17 changes: 12 additions & 5 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
const path = require('path');

module.exports = {
entry: "./test/src/test.js",
entry: './test/src/test.js',
output: {
path: "test/dist",
filename: "test.js"
path: path.resolve(__dirname, './test/dist'),
filename: 'test.js'
},
module: {
loaders: [
rules: [
{
test: /\.js$/,
loader: "babel?presets[]=es2015"
use: {
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
}
]
}
Expand Down
20 changes: 15 additions & 5 deletions webpack.config.optimize.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
const path = require('path');

module.exports = {
entry: "./test/src/test.js",
entry: './test/src/test.js',
output: {
path: "test/dist",
filename: "test.min.js"
path: path.resolve(__dirname, './test/dist'),
filename: 'test.optimize.js'
},
module: {
loaders: [
rules: [
{
test: /\.js$/,
loader: "template-string-optimize!babel?presets[]=es2015"
use: [
'template-string-optimize-loader',
{
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
]
}
]
}
Expand Down
Loading

0 comments on commit 33b4e38

Please sign in to comment.