-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modularization #996
Modularization #996
Changes from all commits
7127b67
18e61d4
1448f24
90656cf
08af90e
85f5be9
41489b2
1f79497
74e44ad
fbe3992
f694f09
9f5a7d0
f984553
af0a2ed
d8bdb7a
a191cb4
f7abefd
f4f2742
34f666a
8a7f864
b001e4a
8423f0b
cfbf7ae
0d09f43
db9acac
e46c8a6
636908b
9688db3
10ac9e9
d611a47
b73cedc
430e42f
73d57d2
943dbed
54411fc
5da468f
e642157
3cf46d0
070ed49
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"presets": ["es2015"] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,10 @@ | ||
node_modules | ||
dist | ||
perf/versions | ||
nyc_output | ||
coverage | ||
*.log | ||
.DS_Store | ||
npm-debug.log | ||
tmp | ||
build | ||
build-es |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
{ | ||
"validateIndentation": 4 | ||
} | ||
"validateIndentation": 4, | ||
"esnext": true | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
lib | ||
scripts | ||
support/dependencies.json | ||
support/module_template.md |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,123 @@ | ||
# This makefile is meant to be run on OSX/Linux. Make sure any artifacts | ||
# created here are checked in so people on all platforms can run npm scripts. | ||
# This build should be run once per release. | ||
|
||
export PATH := ./node_modules/.bin/:$(PATH):./bin/ | ||
|
||
PACKAGE = asyncjs | ||
XYZ = node_modules/.bin/xyz --repo [email protected]:caolan/async.git | ||
REQUIRE_NAME = async | ||
BABEL_NODE = babel-node | ||
UGLIFY = uglifyjs | ||
XYZ = support/xyz.sh --repo [email protected]:caolan/async.git | ||
|
||
BUILDDIR = build | ||
BUILD_ES = build-es | ||
DIST = dist | ||
SRC = lib/index.js | ||
SCRIPTS = ./support | ||
JS_SRC = $(shell find lib/ -type f -name '*.js') | ||
LINT_FILES = lib/ test/ mocha_test/ $(shell find perf/ -maxdepth 2 -type f) support/ gulpfile.js karma.conf.js | ||
|
||
BUILDDIR = dist | ||
SRC = lib/async.js | ||
UMD_BUNDLE = $(BUILDDIR)/dist/async.js | ||
UMD_BUNDLE_MIN = $(BUILDDIR)/dist/async.min.js | ||
CJS_BUNDLE = $(BUILDDIR)/index.js | ||
ES_MODULES = $(patsubst lib/%.js, build-es/%.js, $(JS_SRC)) | ||
|
||
all: lint test clean build | ||
|
||
build: $(wildcard lib/*.js) | ||
mkdir -p $(BUILDDIR) | ||
cp $(SRC) $(BUILDDIR)/async.js | ||
uglifyjs $(BUILDDIR)/async.js -mc \ | ||
--source-map $(BUILDDIR)/async.min.map \ | ||
-o $(BUILDDIR)/async.min.js | ||
all: clean lint build test | ||
|
||
test: | ||
nodeunit test | ||
npm test | ||
|
||
clean: | ||
rm -rf $(BUILDDIR) | ||
rm -rf $(BUILD_ES) | ||
rm -rf $(DIST) | ||
rm -rf tmp/ | ||
|
||
lint: | ||
jshint $(SRC) test/*.js mocha_test/* perf/*.js | ||
jscs $(SRC) test/*.js mocha_test/* perf/*.js | ||
jshint $(LINT_FILES) | ||
jscs $(LINT_FILES) | ||
|
||
.PHONY: test lint build all clean | ||
# Compile the ES6 modules to singular bundles, and individual bundles | ||
build-bundle: build-modules $(UMD_BUNDLE) $(CJS_BUNDLE) | ||
|
||
build-modules: | ||
$(BABEL_NODE) $(SCRIPTS)/build/modules-cjs.js | ||
|
||
$(UMD_BUNDLE): $(JS_SRC) package.json | ||
mkdir -p "$(@D)" | ||
$(BABEL_NODE) $(SCRIPTS)/build/aggregate-bundle.js | ||
|
||
$(CJS_BUNDLE): $(JS_SRC) package.json | ||
$(BABEL_NODE) $(SCRIPTS)/build/aggregate-cjs.js | ||
|
||
# Create the minified UMD versions and copy them to dist/ for bower | ||
build-dist: $(DIST) $(UMD_BUNDLE) $(UMD_BUNDLE_MIN) $(DIST)/async.js $(DIST)/async.min.js | ||
|
||
$(DIST): | ||
mkdir -p $@ | ||
|
||
$(UMD_BUNDLE_MIN): $(UMD_BUNDLE) | ||
mkdir -p "$(@D)" | ||
$(UGLIFY) $< --mangle --compress \ | ||
--source-map $(DIST)/async.min.map \ | ||
-o $@ | ||
|
||
$(DIST)/async.js: $(UMD_BUNDLE) | ||
cp $< $@ | ||
|
||
$(DIST)/async.min.js: $(UMD_BUNDLE_MIN) | ||
cp $< $@ | ||
|
||
build-es: $(ES_MODULES) | ||
|
||
$(BUILD_ES)/%.js: lib/%.js | ||
mkdir -p "$(@D)" | ||
sed -r "s/(import.+)lodash/\1lodash-es/g" $< > $@ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice. Really liking this makefile @aearly There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 😄 I'm totally a Make fanboy. This does force windows maintainers to use something like MinGW, though. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thats fine, as long as they can write and run tests its okay for me |
||
|
||
test-build: | ||
mocha support/build.test.js | ||
|
||
build-config: $(BUILDDIR)/package.json $(BUILDDIR)/component.json $(BUILDDIR)/bower.json $(BUILDDIR)/README.md $(BUILDDIR)/LICENSE $(BUILDDIR)/CHANGELOG.md | ||
|
||
build-es-config: $(BUILD_ES)/package.json $(BUILD_ES)/README.md $(BUILD_ES)/LICENSE $(BUILD_ES)/CHANGELOG.md | ||
|
||
bower.json: package.json | ||
support/sync-package-managers.js | ||
|
||
component.json: package.json | ||
support/sync-package-managers.js | ||
|
||
$(BUILDDIR)/package.json: package.json | ||
mkdir -p "$(@D)" | ||
support/sync-cjs-package.js > $@ | ||
|
||
$(BUILDDIR)/%: % | ||
mkdir -p "$(@D)" | ||
cp $< $@ | ||
|
||
$(BUILD_ES)/package.json: package.json | ||
mkdir -p "$(@D)" | ||
support/sync-es-package.js > $@ | ||
|
||
$(BUILD_ES)/%: % | ||
mkdir -p "$(@D)" | ||
cp $< $@ | ||
|
||
.PHONY: build-modules build-bundle build-dist build-es build-config build-es-config test-build | ||
|
||
build: clean build-bundle build-dist build-es build-config build-es-config test-build | ||
|
||
.PHONY: test lint build all clean | ||
|
||
.PHONY: release-major release-minor release-patch | ||
release-major release-minor release-patch: all | ||
./support/sync-package-managers.js | ||
git add --force *.json | ||
git add --force $(BUILDDIR) | ||
git add --force $(DIST) | ||
git commit -am "update minified build"; true | ||
$(XYZ) --increment $(@:release-%=%) | ||
# build again to propagate the version | ||
$(MAKE) build-config | ||
$(MAKE) build-es-config | ||
cd build/ && npm pack | ||
cd build-es/ && npm pack |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
my information